Сохранение инициализации в фигурных скобках с удаленным конструктором по умолчаниюC++

Программы на C++. Форум разработчиков
Anonymous
Сохранение инициализации в фигурных скобках с удаленным конструктором по умолчанию

Сообщение Anonymous »

Мне хотелось бы иметь тип агрегатной структуры, который нельзя случайно оставить неинициализированным.
В настоящее время с помощью следующего кода:
< pre class="lang-cpp Prettyprint-override">

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

struct Foo {
int a;
int b;
};

Foo foo;
остается неинициализированным. Это можно исправить с помощью Foo foo = {}, который инициализирует его нулевым значением, или Foo foo = {.a = 1, .b = 2}, чтобы явно задать поля.Я хотел бы обеспечить инициализацию полей. Самый простой способ сделать это — удалить конструктор по умолчанию

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

struct Foo {
int a;
int b;
Foo() = delete;
};
Однако это отключает инициализацию в фигурных скобках, а это именно то, что я хочу, чтобы люди использовали!
Есть ли способ поддержать {}, {1, 2, "foo" и {.a = 1, .b = 2, .c = "foo" инициализация стиля при удалении конструктора по умолчанию? Я знаю, что можно использовать std::initializer_list для однородных элементов, но не думаю, что здесь это работает для всего.

Подробнее здесь: https://stackoverflow.com/questions/793 ... onstructor

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