Ответ 1
Это ошибка, которая по существу сводится к тому, что GCC жалуется на неявно инициализированные члены данных const
в агрегатной инициализации. Например.
struct {const int i;} bar = {};
Отказывается, поскольку в bar
в инициализаторе bar
нет инициализатора-предложения для i
. Однако стандарт указывает в §8.5.1/7
, что
Если в списке меньше предложений инициализатора, чем членов в совокупности, то каждый элемент явно не инициализирован должен быть инициализирован из своего элемента управления выравниванием или равным или, если не является символом-равным-инициализатором, из пустого списка инициализаторов (8.5.4).
Таким образом, код инициализирует i
(как будто на = {}
), а жалоба GCC неверна.
Фактически эта ошибка уже сообщалась четыре года назад как # 49132 и исправлена в GCC 5.