【发布时间】:2023-03-18 22:00:01
【问题描述】:
给定
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 错误吗?如果不是,这是怎么回事?
【问题讨论】:
-
奇怪的是,如果你从
x的定义中去掉constexpr,那么it compiles。 -
请report a bug,谢谢
标签: c++ c++11 static-members constant-expression in-class-initialization