1 函数模板
模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号扩住的一个或多个模板形参的列表,形参之间以逗号分隔。关于函数模板的详细介绍,请参考《C++中模板函数及模板类的使用(上)》。
2 函数模板的返回值是模板类型参数
函数模板中的参数和返回值都可以是模板类型参数。编译器必须通过调用函数模板的实参来推断模板类型参数的具体类型。但是,当函数模板的返回值是模板类型参数时,编译器无法通过函数调用来推断返回值的具体类型。此时,在调用函数时必须提供一个显式模板实参(explicit template argument)。
3 显式模板实参
显式模板实参在尖括号中给出,位于函数名之后,实参列表之前。显式模板实参按由左向右的顺序与对应的模板参数匹配。例如
template<typename T1, typename T2, type