Boost :: Tribool: странное поведение или ошибка?
Вопрос
Я исследую Boost :: Tribool и был удивлен следующим поведением.
{
using namespace boost;
boost::tribool t(indeterminate);
assert(t==indeterminate); // This assertion fails!
}
Однако, если я сделаю это, утверждает проходит.
assert(indeterminate(t));
Никаких предупреждений компилятора или ошибок в любом случае. У кого -нибудь есть хорошее объяснение того, почему это должно быть ??
Решение
Я думаю, что ответ в документация:
Результат сравнения двух неопределенных значений является неопределенным (не правда) - мы не знаем, что являются ценностями, поэтому мы не можем сказать, что они равны;
а неопределенный Функция может быть использована для проверки, находится ли трибул в неопределенном состоянии.
Не связан с StackOverflow