我寫的混亂,短暫的例子,我在這裏:試圖瞭解模板
#include <iostream>
template <typename T>
T Add (T t1, T t2)
{
std::cout << "<typename T>" << std::endl ;
return t1 + t2 ;
}
template <int>
int Add (int n1, int n2)
{
std::cout << "<int>" << std::endl ;
return n1 + n2 ;
}
template <>
int Add (int n1, int n2)
{
std::cout << "<>" << std::endl ;
return n1 + n2 ;
}
int main (void)
{
Add (5, 4) ;
Add <int> (5, 4) ;
Add <> (5, 4) ;
return 0 ;
}
的這個輸出是:
<>
<>
<>
所以我想,好吧,最明確的專業化優先。
但後來我刪除:
template <>
int Add (int n1, int n2)
{
std::cout << "<>" << std::endl ;
return n1 + n2 ;
}
,輸出是:
<typename T>
<typename T>
<typename T>
爲什麼不template <int>
版本被調用?
什麼會導致它被調用?
爲什麼這個語法的目的是?
好問題。如果你想要調用'int',那麼使用'template'而不是'template ' –
2014-01-21 19:59:10