Нужен ли тривиальный конструктор по умолчанию для агрегатной инициализации?
Вообщем насколько я знаю, если в классе не определено пользовательских конструкторов и есть public поля, то для класса доступна агрегатная инициализация. Но если мы удаляем конструктор, тогда объекты создать нельзя. Не значит ли это, что конструктор, определяемый компилятором как-то нужен для агрегатной инициализации? И является ли наличие конструктора обязательным для создания объекта?
Ответы (1 шт):
Автор решения: HolyBlackCat
→ Ссылка
Агрегатная инициализация не вызывает никакие конструкторы самого класса.
Сгенерированный конструктор по умолчанию не имеет к ней отношения. Вот пример инициализации класса, для которого он не был сгенерирован:
struct A {int &x;};
int y;
A a{y};