如何防止编译代码的最后一行?boost :: optional可选转换为bool
#include <boost/optional.hpp>
int main()
{
typedef boost::optional<int> int_opt;
int_opt opt = 0;
bool x = opt; // <- I do not want this to compile
}
最后一行不检查opt
的包含int值,而是编译如下类型转换为bool,似乎并没有为用户意图是什么。
安全布尔成语在这里似乎是相关的?
你是什么意思_something like_?用英文描述你想要什么。代码显然没有描述你想要的。那么我们应该怎么知道? – Oswald 2011-02-07 16:02:05
你不能`boost :: optional`实现`operator!`,这就是上面最后一行编译的原因。你甚至不能从这个隐藏该操作符 - 你需要修复你的代码。 – Nim 2011-02-07 16:17:02