5

给定

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 错误吗?如果没有,这里发生了什么?

4

2 回答 2

2

这是一个错误,而且似乎已经报告过了。

于 2014-02-09T15:35:36.290 回答
0

您可以改为执行以下操作:

struct X {};

const auto x = X{};

struct S {
    static constexpr auto& rx = x;  
};
于 2014-02-09T15:24:41.910 回答