Boost :: tribool:奇怪的行为,还是bug?

时间:2010-08-16 17:01:05

标签: c++ boost tribool

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

{
using namespace boost;

boost::tribool t(indeterminate);

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

但是,如果我这样做,则断言传递。

assert(indeterminate(t));

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

1 个答案:

答案 0 :(得分:11)

我认为答案在documentation

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

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