函数模板

函数模板的声明格式如下:

template <类型名称 T>
返回值类型 函数名称(参数列表) {
    函数体
}

关键字template后接的是模板形参表,是用尖括号括住的一个或者多个模板形参的列表,形参之间使用逗号分隔,模板形参表不能为空。模板形参可以使用表示类型的类型形参,也可以是表示常量表达式的费类型形参。类型形参跟在关键字class或者typename后定义,其意义相同,只是typename是由标准 C++提供的,旧版 C++可能只能使用class关键字。类型形参的名称可以随意命名,但在之后的使用过程中需要保持一致,并且不能重用。

以下给出一个用于比较的函数模板示例。

template <typename T>
int compare(const T& v1, const T& v2) {
    if (v1 < v2) return -1;
    if (v1 > v2) return 1;
    return 0;
}

函数模板在调用时会自动进行推断,由编译器决定调用哪个版本。