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

标签 c++ arrays constants compile-time-constant

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

例如:

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

我尝试过其他答案的解决方案,但它们不够“恒定”,编译器在上述情况下使用它们时不会给出错误。

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

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

最佳答案

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

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

LIVE

关于c++ - const 的 const 数组,在数组长度定义上使用其元素或给模板参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44592986/

相关文章:

floating-point - 如何访问浮点常量?

c++ - 从 64 位整数秒数创建一个 boost::posix_time::ptime 对象

php - in_array 找不到元素

python - 在 Python 中访问 2D 列表/数组并进行计算的更快方法?

c - 使用两个不同数组中的值填充动态数组时防止存储重复项

c++ - C++ 中的 extern 和 const

ruby-on-rails - 如果我使用 '||=' 声明一个常数值,会发生什么(坏的)?

c++ - 在类嵌套静态 const 成员变量初始化 Clang vs GCC 哪个编译器是正确的?

c++ - QML ListView 多选

c++ - <eof> 附近的 lua 函数参数