我正在探索boost::tribool并对以下行为感到惊讶。
{
using namespace boost;
boost::tribool t(indeterminate);
assert(t==indeterminate); // This assertion fails!
}
但是,如果我这样做,则断言传递。
assert(indeterminate(t));
在任何一种情况下都没有编译器警告或错误。任何人都有一个很好的解释为什么这应该是??
答案 0 :(得分:11)
我认为答案在documentation:
比较两个不确定值的结果是不确定的(不是真的) - 我们不知道这些值是什么,所以我们不能说它们是相等的;
indeterminate函数可用于测试tribool是否处于不确定状态。