<分区>
Possible Duplicate:
Template func and non template func call order
为什么这段代码代码会打印
::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)
正如预期的那样。