В классе инициализация статического члена

Дано

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? Если нет, что здесь происходит?

5

Решение

Это ошибка, и кажется, уже сообщалось.

2

Другие решения

Вместо этого вы можете сделать следующее:

struct X {};

const auto x = X{};

struct S {
static constexpr auto& rx = x;
};
0

По вопросам рекламы [email protected]