Дано
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;
};