Возможно, из той же оперы:
template <typename T>
void z(const T t)
{}
template <typename T>
void f(const T t)
{}
int main(int argc, char* argv[])
{
f(z<int>);
return 0;
}
Compiling...
TSpec.cpp
Linking...
TSpec.obj : error LNK2001: unresolved external symbol "void __cdecl z(int)" (?z@@YAXH@Z)
Debug/TSpec.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.
TSpec.exe — 2 error(s), 0 warning(s)
А вот так уже линкуется
template <typename T>
void z(const T t)
{}
template <typename T>
void f(const T t)
{}
int main(int argc, char* argv[])
{
if(0) z<int>(1);
f(z<int>);
return 0;
}
Что с этим делать?