Подтвердить что ты не робот

Инициализация скобок (агрегата) для структур со значениями по умолчанию

Инициализация структуры со значениями по умолчанию тривиальна:

struct X { int a; int b = 2; };

и инициализация структуры с помощью инициализатора скобок также тривиальна:

X x = {1, 3};

Удивительно, что код init не будет компилироваться, пока не удалю значение по умолчанию. Итак, как бы я сделал init в таком случае? Я хотел бы сохранить X POD без c-tor.

4b9b3361

Ответ 1

Вот некоторые документы, относящиеся к проблеме:

http://en.cppreference.com/w/cpp/language/aggregate_initialization

В ваш код является недействительным. В снова верен.

В С++ 11 добавление инициализации по умолчанию предотвращает действительность действительного init. В С++ 14 это не так.

Способом решения вашей проблемы в С++ 11 было бы написать конструктор со значением для значения a и b со значением по умолчанию.