C ++ 11从参数包创建静态数组

时间:2013-06-11 15:48:41

标签: c++ templates c++11 variadic-templates

是否可以使用模板参数包中的值创建static const数组? 我尝试了以下代码,但gcc 4.8.1给出了“错误:参数包未扩展”

template<int... N>
struct ARRAY_OF_DIMS
{
    static constexpr size_t NDIM = sizeof...(N);
    static const int DIMS[NDIM];
};

template<int... N>
const int ARRAY_OF_DIMS<N>::DIMS[ARRAY_OF_DIMS<N>::NDIM] = { N... };

1 个答案:

答案 0 :(得分:14)

尝试:

template<int... N>
const int ARRAY_OF_DIMS<N...>::DIMS[ARRAY_OF_DIMS<N...>::NDIM] = { N... };

ARRAY_OF_DIMS<N>中的参数包是未展开的参数包。必须扩展不是sizeof...参数的每个参数包