给定
struct X {};
constexpr auto x = X{};
struct S {
static constexpr auto& rx = x;
};
海湾合作委员会 4.8 说
错误:静态成员"S::rx"的非常量类内初始化无效
static constexpr auto& rx = x;
^
错误:(需要类外初始化)
错误:"S::rx"在声明时无法由非常量表达式初始化
我希望x
是一个常量表达式,适合于这种初始化。这是一个 gcc 错误吗?如果没有,这是怎么回事?
这是一个错误,似乎已经报告过。
您可以改为执行以下操作:
struct X {};
const auto x = X{};
struct S {
static constexpr auto& rx = x;
};