【发布时间】:2017-01-16 20:40:55
【问题描述】:
我正在尝试设计一个 bool 包装器 结构应用 safe bool idiom。
解决这个问题的经典实现非常简单:骨架可能是这样的:
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
我尝试使用模板伤害自己,但没有成功。
我怎样才能让它工作?
【问题讨论】:
-
您可能还想查看一些有关安全布尔的现有技术。例如,this page 经历了制作安全布尔值的过程,并解释了在此过程中可能遇到的一些陷阱(例如,
operator bool带有一些其他演员可以避免的意外副作用) -
谢谢!我一定会看看的!
标签: c++ boolean safe-bool-idiom