鉴于
struct X {};
constexpr auto x = X{};
struct S {
static constexpr auto& rx = x;
};
gcc 4.8说
错误:非常量的类内初始化对静态成员'S :: rx'
无效
static constexpr auto& rx = x;
^
错误:(需要进行类外初始化)
错误:声明
时,非常量表达式无法初始化'S :: rx'
我希望x
是一个常量表达式,适合这种初始化。这是一个gcc bug吗?如果没有,这里发生了什么?
答案 0 :(得分:2)
这是一个错误,似乎是already reported。
答案 1 :(得分:0)
您可以改为:
struct X {};
const auto x = X{};
struct S {
static constexpr auto& rx = x;
};