从`static const` C-array

时间:2017-09-13 11:53:02

标签: arrays c++11

我有一个const struct MyType[];数组,在C-header中声明并在随附的C文件中定义 - 其签名不能轻易更改。我想为这个数据库提供一个constexpr cpp接口,并且正在寻找一种在constexpr上下文中转换/采用/使用const数组的方法。

模板魔术可能吗?但是间接仍然存在,并且所使用的数组的初始化时间没有明确定义......

我曾经通过一些std::integral_constant<T,value>提供了数据库的属性。但这依赖于生成的C数据库的cpp-duplication。地狱不高效,笨重,脆弱!

标准中的任何提示,想法或破坏性的引用?

1 个答案:

答案 0 :(得分:1)

标记为constexpr的变量必须在编译时完全可计算,而不是 link 时。因此,如果您的数组在.cpp文件中定义,与声明分开 - 则不能是constexpr。这里不需要引用标准,这非常简单。

(我忽略了你提到使用.c文件,这不是我认为的问题的一部分。)