在这种情况下,我们用T为模板形参的名字,而不是一些形式。它没有差别,和T是一个泛型类型比较常见的模板参数名称。
在上面的例子中,我们使用函数模板的总和的两倍。用int类型的参数的第一时间,并与双变量的二个类型。编译器实例化并称为每一次函数的适当版本。
注意如何还用来声明的局部变量的类型中的总和(通用):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// function templates
#include <iostream>
using namespace std;
template <class T, class U>
bool are_equal (T a, U b)
{
return (a==b);
}
int main ()
{
if (are_equal(10,10.0))
cout << "x and y are equal\n";
else
cout << "x and y are not equal\n";
return 0;
}
x and y are equal
Edit & Run
fixed_multiply函数模板的第二个参数是int类型。它只是看起来像一个普通的函数的参数,并且可以用就像一个。
但存在一个主要的区别:模板参数的值是在编译时生成不同的实例化的函数fixed_multiply决定的,因此,参数的值是没有通过在运行时:两个调用fixed_multiply主要基本呼叫的函数的两个版本:一个总是乘以2,和一个总是乘以三。出于同样的原因,第二个模板参数必须是一个常量表达式(它不能通过一个变量)。