模板定义以关键字template开始,后跟一个模板参数列表。
模板类型参数
using namespace std;
#include <iostream>
template<typename T>
int compare(const T& v1, const T& v2)
{
if (v1 < v2) return -1;
if (v2 < v1) return 1;
return 0;
}
int main()
{
cout << compare(1, 2) << endl;
cout << compare(3.3, 2.6) << endl;
}
类型参数前必须使用关键字class或typename
非类型模板参数
一个非类型参数表示一个值而非一个类型。
using namespace std;
#include <iostream>
template<unsigned N,unsigned M>
int compare(const char(&p1)[N], const char(&p2)[M])
{
return strcmp(p1,p2);
}
int main()
{
cout << compare("Hi", "mom") << endl;
}
绑定到非类型模板参数的实参必须是一个常量表达式。
1272

被折叠的 条评论
为什么被折叠?



