Estoy explorando boost::tribool y me sorprendió el siguiente comportamiento.Boost :: tribool: comportamiento extraño o error?
{
using namespace boost;
boost::tribool t(indeterminate);
assert(t==indeterminate); // This assertion fails!
}
Sin embargo, si hago esto, la afirmación pasa.
assert(indeterminate(t));
No hay advertencias o errores del compilador en ambos casos. ¿Alguien tiene una buena explicación de por qué esto debería ser?
Y como las conversiones indeterminadas implícitamente bool son falsas, la afirmación falla. –
"el resultado de comparar dos valores indeterminados es indeterminado". Ay. Supongo que tiene sentido en un nivel, pero no es intuitivo para mí. – Roddy
@Roddy, mira la implementación de tribool :: operator ==() ¿Estás listo? ¡vuelve tribool! Odio al tipo que envió este código para impulsar: D +1 para una buena pregunta, ¡este NO es un comportamiento intuitivo! –