我正在尝试设计一个应用 安全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
我尝试使用模板来伤害自己,但没有成功。
我该如何使其生效?