我正在探索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/