非类型模板参数
模板参数分为类型形参与非类型形参 。
类型形参即:出现在模板参数列表中,跟在 class 或者 typename 之类的参数类型名称 。
非类型形参,就是用一个常量作为类 ( 函数 ) 模板的一个参数,在类 ( 函数 ) 模板中可将该参数当成常量来使用 。
namespace bite{// 定义一个模板类型的静态数组// 模板支持缺省参数// 只支持整形做非类型模板参数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 ;} ;}
注意:
1. 浮点数、类对象以及字符串是不允许作为非类型模板参数的 。
2. 非类型的模板参数必须在编译期就能确认结果 。