我有一个const struct MyType[];
数组,在C-header中声明并在随附的C文件中定义 - 其签名不能轻易更改。我想为这个数据库提供一个constexpr
cpp接口,并且正在寻找一种在constexpr上下文中转换/采用/使用const数组的方法。
模板魔术可能吗?但是间接仍然存在,并且所使用的数组的初始化时间没有明确定义......
我曾经通过一些std::integral_constant<T,value>
提供了数据库的属性。但这依赖于生成的C数据库的cpp-duplication。地狱不高效,笨重,脆弱!
标准中的任何提示,想法或破坏性的引用?
答案 0 :(得分:1)
标记为constexpr
的变量必须在编译时完全可计算,而不是 link 时。因此,如果您的数组在.cpp
文件中定义,与声明分开 - 则不能是constexpr
。这里不需要引用标准,这非常简单。
(我忽略了你提到使用.c文件,这不是我认为的问题的一部分。)