Нужен ли тривиальный конструктор по умолчанию для агрегатной инициализации?

Вообщем насколько я знаю, если в классе не определено пользовательских конструкторов и есть public поля, то для класса доступна агрегатная инициализация. Но если мы удаляем конструктор, тогда объекты создать нельзя. Не значит ли это, что конструктор, определяемый компилятором как-то нужен для агрегатной инициализации? И является ли наличие конструктора обязательным для создания объекта?


Ответы (1 шт):

Автор решения: HolyBlackCat

Агрегатная инициализация не вызывает никакие конструкторы самого класса.

Сгенерированный конструктор по умолчанию не имеет к ней отношения. Вот пример инициализации класса, для которого он не был сгенерирован:

struct A {int &x;};
int y;
A a{y};
→ Ссылка