#include<cstdio>
using namespace std;
template<class T, class T1, class T2>
T sum(T1 v1, T2 v2)
{
T value = v1 + v2;
return value;
}
int main()
{
int i = sum<int>(1,2.1);//調用正確。
return 0;
}
#include<cstdio>
using namespace std;
template<class T1, class T2, class T>
T sum(T1 v1, T2 v2)
{
T value = v1 + v2;
return value;
}
int main()
{
int j = sum<int>(1,2.1);//調用錯誤。
int k = sum<int, int, double>(1,2.1);//調用正確。
return 0;
}
這兩種區別就在于template的定義:
template<class T, class T1, class T2>
與
template<class T1, class T2, class T>
顯式模板實參與對應模板形參相匹配。
int j = sum<int>(1,2.1);
在這個調用中,int對應的是T1, 沒有實參的類型可以推斷T的類型,故該調用是錯誤的。
posted on 2007-01-22 23:50
beyonlin 閱讀(501)
評論(0) 編輯 收藏 引用 所屬分類:
C++之路