【发布时间】:2018-01-12 04:29:46
【问题描述】:
我已阅读与此问题相关的所有答案,但老实说,我不确定我是否完全理解解决方案。我正在使用 C++11。
可以说我真的很想声明像static constexpr char value[] = "foo" 这样的东西。
如果我使用 NetBeans/TDM_MINGW,我会收到一个错误,我想这是一个链接错误报告undefined reference to "variable_name"。
在 MS VS 2015 中尝试相同的代码我得到 “表达式未计算为常数”。
一个简单的static constexpr char * 解决了这个问题,但我失去了使用像sizeof 这样的表达式的能力。
简单而直接的问题(如果可能的话直接回答):
- 有没有办法在
struct/class内声明一个static constexpr char []? - 如果 1) 为假,是否有最干净的解决方案来克服这个问题?
static constexpr char *???? - 或者旧的
static const char []仍然是这种情况下的最佳方法? - 我测试了一个可行但远非“干净”的解决方案
static constexpr array<char,50> getConstExpr(){ return array<char,50> {"Hell"} }。它工作正常,但我必须声明字符的大小std::array:(
【问题讨论】:
-
hmm,使用 mingw64 (4.9.2) 和相同版本的 gcc 进行测试,该行有效。有限的 c++11 支持有问题吗?你能参考你读过的东西吗?仅自 C++14 起支持静态 constexpr 成员变量
标签: c++ arrays c++11 static constexpr