可能重复:
模板函数和非模板函数调用顺序
为什么这个代码代码打印
::foo(int)
::foo<T>(T)
template <typename T>
void foo(T)
{
std::cout << "::foo<T>(T) \n";
}
template <typename T>
void bar(T baz)
{
foo(baz);
}
void foo(int)
{
std::cout << "::foo(int) \n";
}
int main()
{
foo(0);
bar(0);
}
而这
void foo(int)
{
std::cout << "::foo(int) \n";
}
template <typename T>
void foo(T)
{
std::cout << "::foo<T>(T) \n";
}
template <typename T>
void bar(T baz)
{
foo(baz);
}
int main()
{
foo(0);
bar(0);
}
印刷
::foo(int)
::foo(int)
正如预期的那样。