概念
函数模板(function template)
template <typename T>
int compare(const T &v1, const T &v2) {
if (v1 < v2) return -1;
if (v2 < v1) return 1;
return 0;
}
template <unsigned N, unsigned M>
int compare(const char (&p1)[N], const char (&p1)[N]) {
return strcpm(p1, p2);
}
- 类型模板参数(type parameter):类型说明符,T 为类型参数
- 非类型模板参数(nontype parameter):表示值而不是类型
类模板(class template)
- 编译器不能为类模板推断模板参数,因此需要在代码中提供显式模板实参(explicit template argument)列表,它们被绑定到模板参数
- 类模板的名字不是一个类型名,类模板是用来实例化类型的,而后者总是包含模板参数的;例外:在类模板自己的作用域中可以直接使用类模板名字(当作类型名)而不提供模板实参
- 类模板的成员函数具有和类模板相同的模板参数;默认情况下,一个类模板的成员函数只有当程序用到它时才进行实例化
C++11 模板学习总结
原文:https://www.cnblogs.com/wangzhiyi/p/13874202.html