非类型模板参数 类模板的特化 类模板特化的应用之类型萃取 模板的分离编译
1.非类型模板参数
模板参数分类类型形参与非类型形参。
类型形参即:
出现在模板参数列表
中,跟在class或者typename之后
的参数类型名称。
非类型形参:
就是用一个常量
作为类(函数)模板的一个参数
,在类(函数)模板中可将该参数当成常量
来使用。
namespace XXX
{
// 定义一个模板类型的静态数组
template<class T, size_t N = 10>
class array
{
public:
T& operator[](size_t index)
{
return _array[index];
}
const T& operator[](size_t index)const
{
return _array[index];
}
size_t size()const
{
return _size;
}
bool empty()const
{
return 0 == _size;
}
private:
T _array[N];
size_t _size;
};
}
注意:
浮点数、类对象以及字符串是不允许作为非类型模板参数的。
非类型的模板参数必须在编译期就能确认结果。