Считается ли «встроенный шаблон функции» «встроенной функцией» в отношении правил ODR?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Считается ли «встроенный шаблон функции» «встроенной функцией» в отношении правил ODR?

Сообщение Anonymous »

В черновике C ++ 20 (N4868) существуют два соответствующих правила о достижении определения: < /p>

Встроенные функции должны иметь их определение, достижимое в каждой единице перевода, в которой они используются ODR: < /li>
< /ul>

pr /basbas.brasr. Встроенная функция или переменная должны быть достигнуты с конца каждого домена определения, в котором она используется ODR вне отброшенного оператора. /> < /ul>

nmtemp.pre/10œbr /> Определение шаблона функции… должно быть достижимо с конца каждого домена определения, в котором он неявно создается ... если только соответствующая специализация не является явной информированной… в некоторой переводной единице; Диагностика не требуется. < /p>
< /blockquote>

Теперь рассмотрите следующую программу, разделенную на два файла: < /p>

Код: Выделить всё

// file1.cpp
template
inline void foo(T a); // declaration

int main() {
foo(123); // implicit instantiation of foo
}
< /code>
// file2.cpp
#include 

template
inline void foo(T a) {
std::cout  В file1.cpp < /code>, foo  < /code> называется (odr-use), но там нет достижимого определения встроенного шаблона функции. [basic.def.odr/11] Применить к шаблонам функций или только к обычным функциям?> 

Подробнее здесь: [url]https://stackoverflow.com/questions/79751164/is-an-inline-function-template-considered-a-inline-function-with-respect-to[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»