将数组数据插入模板 我想用数组中的一些整数填充模板,但是在C++中似乎不允许这样做。例如:

将数组数据插入模板 我想用数组中的一些整数填充模板,但是在C++中似乎不允许这样做。例如:,c++,arrays,templates,constants,C++,Arrays,Templates,Constants,我用整数定义了一个常量数组 const int array[4] = {0, 1, 2, 3}; 我的模板是这样工作的: template<int T> TestClass ... 类中的整型模板参数,如inttemplate TestClass…应该是编译时常量,这就是此类代码无法编译的原因。将数组转换为constepr变量: constexpr int array[4] = {0, 1, 2, 3}; 或者更好: constexpr std::array<int, 4

我用整数定义了一个常量数组

const int array[4] = {0, 1, 2, 3};
我的模板是这样工作的:

template<int T> TestClass ...

类中的整型模板参数,如inttemplate TestClass…应该是编译时常量,这就是此类代码无法编译的原因。

将数组转换为
constepr
变量:

constexpr int array[4] = {0, 1, 2, 3};
或者更好:

constexpr std::array<int, 4> myArray{0, 1, 2, 3};
consteprstd::array myArray{0,1,2,3};
由于数组将是
constexpr
,因此它的用法在编译时有效


请确保为
std::array
版本启用c++14。

中没有模板,因此不要将问题标记为。对不起,太快了!你说得对。请使用
constepr
array和正确的语法(不是用括号来实例化模板)重试。但是数组被声明为常量。编译时间不是常数吗?我怎样才能在模板中使用一些排列得很好的整数(来自数组)?要使它成为编译时常量,您应该将它声明为constexprThats非常有趣。编辑器仍然会标记错误,但它会编译(为什么?)当我现在尝试使用计数器I在for循环中声明模板时,它不会编译:
TestClass
是否也有技巧?您的变量
I
也必须是
constepr
。由于不能有
constexpr
函数参数,因此必须有
i
作为模板参数。但我不能在for循环中增加常量计数器变量
i
。。。?
constexpr int array[4] = {0, 1, 2, 3};
constexpr std::array<int, 4> myArray{0, 1, 2, 3};