Агрегатная инициализация для структур + инициализатор_список: новое против статического [дубликат]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

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