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

const array of const, to use its elements on array length definitions or give template parameters value

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

例如:

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] >();

我尝试过其他答案的解决方案,但它们"constant"不足以让编译器在上述情况下使用它们时不会给出错误。

如何创建 "my_const_array_of_const" 常量以在这种情况下进行编译?

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

您可以使用 constexpr (C++11 起),它保证数组元素的值可以在编译时求值。例如

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

LIVE