《C++ Primer》之读书笔记五

《C++ Primer》之读书笔记五
#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的类型,故该调用是错误的。

你可能感兴趣的:(《C++ Primer》之读书笔记五)