Есть
//file1.cpp
template<class T>void fun(T)//только объявление
int main()
{
fun(10);
return 0;
}
//file2.cpp
template<class T>
void fun(T)
{
}
void g()
{
fun(10);
}
Является ли эта программа правильной?
Стандарт говорит, что если я неявно/явно инстанцирую функцию шаблон, я должен видеть определение (если этот шаблон не инстанцирован где-то явно). Вроде как под такое определение данная ситуация не подходит — определения не видно, явного инстанцирования нет. BCC5.6 VC6.0 7.0 нормально компилируют-компонуют. Где же правда?