模板参数不必都是类型,也可以是非类型的参数。
#include <iostream>
using namespace std;
template<int T>
int add(int x)
{
return T+x;
}
int main()
{
cout<<add<5>(10)<<endl;
system("pause");
}
由于c++11标准允许函数模板具有默认参数,所以可以给函数模板添加默认参数,
template<int T=10>
int add(int x)
{
return T+x;
}
对应的调用方法也可以为
cout<<add(10)<<endl; // cout<<add<10>(10)<<endl;
非类型的模板参数具有一些限制:它们只能是整型(包括枚举类型)、某一对象的指针或引用。
template<double T> //错,double不能作为模板参数