我正在探索 boost :: trigool 并对以下行为感到惊讶。

{
using namespace boost;

boost::tribool t(indeterminate);

assert(t==indeterminate);  // This assertion fails!
} 

但是,如果我这样做,则断言会通过。

assert(indeterminate(t));

无论哪种情况,均无编译器警告或错误。任何人都对为什么应该这样做有很好的解释?

有帮助吗?

解决方案

我认为答案在 文档:

比较两个不确定值的结果是不确定的(不正确) - 我们不知道这些值是什么,因此我们不能说它们是平等的;

不定 函数可用于测试brigool是否处于不确定状态。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top