Pregunta

impulso :: tribool y fue sorprendido por el siguiente comportamiento.

{
using namespace boost;

boost::tribool t(indeterminate);

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

Sin embargo, si hago esto, la aserción pasa.

assert(indeterminate(t));

No hay advertencias del compilador o errores en cualquiera de los casos. Alguien tiene una buena explicación de por qué esto debería ser ??

¿Fue útil?

Solución

Creo que la respuesta está en el href="http://www.boost.org/doc/libs/1_43_0/doc/html/boost/logic/operator___id623512.html" rel="noreferrer"> documentación :

el resultado de comparar dos valores indeterminados es indeterminada (no es cierto) - no se sabe cuáles son los valores, por lo que no podemos decir que son iguales;

indeterminada función de lata ser utilizado para probar si un tribool está en un estado indeterminado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top