我正在尝试设计一个应用安全 bool idiom的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
我试图使用模板伤害自己,但没有成功。
我怎样才能让它工作?