constexpr(gcc) 错误 - 错误:在令牌之前不允许使用大括号括'{'初始值设定项

Error with constexpr(gcc) - error: a brace-enclosed initializer is not allowed here before '{' token

本文关键字:错误 gcc 令牌 不允许 constexpr      更新时间:2023-10-16
struct X {
constexpr static char a1[] = "hello"; // Okay
constexpr static const char* a2[] = {"hello"}; // Error
};
int main(){}

使用 gcc 编译会给出错误:

错误:此处不允许在"{"标记之前使用大括号括起来的初始值设定项

这是对constexpr的非法使用吗?

编辑

尝试了 3 个不同版本的 gcc,它在我拥有的最新 4.7.0 上编译(我刚刚下载了它,我使用的是 mingw-w64(,所以它看起来是一个修复的错误(不过链接到该错误会很好!

4.7.0 20120311(预发布(//好的
4.6.4 20120305(预发行版(//错误
4.7.0 20110829(实验性(//错误

这是一个已修复的错误。我已经确认代码使用 g++ 4.7.0 20120311 (prerelease) 编译.