const数组的const,在数组长度定义上使用其元素或给出模板参数值

时间:2017-06-16 15:29:51

标签: c++ arrays const compile-time-constant

我需要一个常量的常量数组,它的常量(常量常量数组的元素)可以用在只能使用编译时常量的地方,比如数组长度定义。

E.g:

int a[ my_const_array_of_const[0] ];
int b[ my_const_array_of_const[1] ];

template<int p>
foo() { ... };

foo< my_const_array_of_const[2] >();

我已经尝试过其他答案的解决方案,但他们不是&#34;常数&#34;足以让编译器在上述情况下使用它们时不会出错。

如何创建&#34; my_const_array_of_const&#34;在这种情况下不断编译?

我需要它来配置高级综合(HLS)设计。对于HLS C ++语法受到限制。不允许动态内存,因此我需要使用静态数组。此外,所有编译时间常量都可用于优化硬件加速器(这是使用模板参数而不是变量的原因)。

1 个答案:

答案 0 :(得分:2)

您可以使用constexpr(自C ++ 11开始),这可以保证在编译时可以计算数组元素的值。 e.g。

constexpr int my_const_array_of_const[2] {1, 2};

LIVE