Вопрос

Я исследую Boost :: Tribool и был удивлен следующим поведением.

{
using namespace boost;

boost::tribool t(indeterminate);

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

Однако, если я сделаю это, утверждает проходит.

assert(indeterminate(t));

Никаких предупреждений компилятора или ошибок в любом случае. У кого -нибудь есть хорошее объяснение того, почему это должно быть ??

Это было полезно?

Решение

Я думаю, что ответ в документация:

Результат сравнения двух неопределенных значений является неопределенным (не правда) - мы не знаем, что являются ценностями, поэтому мы не можем сказать, что они равны;

а неопределенный Функция может быть использована для проверки, находится ли трибул в неопределенном состоянии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top