如果有下列一模板函数:
template<typename T> T fun(T a) { return a; };
则在使用时有两种方法:
// 方法一 fun<int>(5); // 方法二 fun(5);
而如果是这样的话
template<typename T,typename TT> T fun(TT a) { return a; };
是可以用
fun<int,int>(5);
或者
fun<int>(5)
但是如果想用下面这种省略参数的方法,
模板参数的模板列表的第一个参数必须是返回值。
也就是下面这种形式的模板函数在使用的时候是不能省略参数的。
template<typename TT,typename T> T fun(TT a) { return a; };