Я создал структуру параметров, предназначенную для использования через назначенный инициализатор:
struct FooOptions {
bool enableReticulation;
};
void Foo(FooOptions&& opts);
Foo(FooOptions{.enableReticulation = true});
К сожалению, поскольку bool
имеет конструктор по умолчанию, его также можно сделать следующим образом:
Foo(FooOptions{});
но я не хочу этого;Я хочу, чтобы пользователи Foo явно решили включить сетку или нет. Я могу добиться этого с помощью ошибки времени выполнения следующим образом:
struct FooOptions {
bool enableReticulation = []() -> bool {
assert(false, "No value provided for enableReticulation");
}();
};
Но я бы предпочел сделать это с ошибкой времени компиляции. Есть ли способ сделать это? Я согласен с изменением bool
на SomeWrapper<bool>
при необходимости, пока я могу в основном инициализировать SomeWrapper<T>
, как если бы это был T
, но без инициализатора по умолчанию.