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

{
using namespace boost;

boost::tribool t(indeterminate);

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

但是,如果我这样做,则断言会通过。
assert(indeterminate(t));

两种情况下都没有编译器警告或错误。任何人都有一个很好的解释,为什么应该这样?

最佳答案

我认为答案在documentation中:

比较两个不确定值的结果是不确定的(不是真的)-我们不知道这些值是什么,所以我们不能说它们相等。

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

关于c++ - Boost::tribool:奇怪的行为或错误?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3495428/

10-13 09:10