在C语言中,可以很轻易的建立一个在栈上的静态数组,如下:
int arr[10];
但是在C++中,想建立一个在栈上的静态数组得这么做:
std::array<int, 10> arr;
可以看到,这里的模版参数传了类型int,还传了整数10,这也说明了C++中的模版参数可以是非类型的。
例如array:
template<class T, size_t N>
{
private:
T _array[N];
size_t _size = 0;
}
非类型模版参数是有限制的,一般只能够传整形数值(变量不可以),可以给缺省。