Встроенные функции должны иметь их определение, достижимое в каждой единице перевода, в которой они используются 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]
Мобильная версия