将数组数据插入模板 我想用数组中的一些整数填充模板,但是在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};