需要指定模板函数参数的两种必要情况
1.当参数推演失败, 产生ambiguous,可以明白指定参数
min5<double>(dobj, fobj);
2.当编译器无法推演出返回类型时
template <class T1, class T2, class T3>
T1 sum(T2, T3);
指定参数时, 只有尾部的参数可以不写如:
sum<double>(fobj, dobj);//返回值类型T1是double, T2是float, T3是double
sum<double, ,double>(fobj, dobj);//错误, 只能省略后面的