0
可能重複:
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)
預期。
dup http://stackoverflow.com/questions/12174493/template-func-and-non-template-func-call-order – ForEveR
雖然我不能考慮它是一個值得在你的問題的背景下閱讀的答案:http://www.gotw.ca/publications/mill17.htm。 – Tomek