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

Rod*_*ddy 6 c++ boost tribool

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

{
using namespace boost;

boost::tribool t(indeterminate);

assert(t==indeterminate);  // This assertion fails!
} 
Run Code Online (Sandbox Code Playgroud)

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

assert(indeterminate(t));
Run Code Online (Sandbox Code Playgroud)

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

Unc*_*ens 11

我认为答案在文档中:

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

不确定功能可以用来测试一个tribool处于不确定状态.