#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 阅读(491)
评论(0) 编辑 收藏 引用 所属分类:
C++之路