Я пытаюсь создать структуру оболочки bool, применяя безопасную идиому bool.
Классическая реализация для решения этого довольно тривиальная: скелет может быть примерно таким:
struct Bool final
{
Bool() = default;
Bool(bool value)
: _value{value}
{}
explicit operator bool() const {
return _value;
}
private:
bool _value{false};
};
Часть, которую я пытаюсь улучшить, заключается в построении Bool
.
Например, я хочу избежать неявного сужения по дизайну:
Bool b1(45); // yields warnings, but it compiles
Bool b2{3}; // not ok by standard
Я пытался причинить себе боль, используя шаблоны, но безуспешно.
Как я могу заставить его работать?