Агрегатная инициализация для структур + инициализатор_список: новое против статического [дубликат]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Агрегатная инициализация для структур + инициализатор_список: новое против статического [дубликат]

Сообщение Anonymous »

Недавно я обнаружил странную проблему, возникающую в результате выделения объектов некоторых сложных структур (конструктор не определен). В результате я обнаружил, что если у меня есть, например:

Код: Выделить всё

struct A {
int                           b;
std::initializer_list  c;
};
тогда объекты a этой структуры A выделены с использованием new и статически различны:

Код: Выделить всё

A a {1, {new Type(), new Type()}};
делает то, что я хотел, но

Код: Выделить всё

A* a = new A {1, {new Type(), new Type()}};
выполняет некоторую ошибку при инициализации члена c.

Различаются ли эти случаи в стандарте C++, плохом поведении компилятора или моей ошибке? Протестировано на VS2017.

Подробнее здесь: https://stackoverflow.com/questions/576 ... -vs-static
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»