Question

J'explore boost :: tribool et a été surpris par le comportement suivant.

{
using namespace boost;

boost::tribool t(indeterminate);

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

Cependant, si je fais ça, assert passe.

assert(indeterminate(t));

Aucun avertissement du compilateur ou des erreurs dans les deux cas. Quelqu'un at-il une bonne explication des raisons pour lesquelles cela devrait être ??

Était-ce utile?

La solution

Je pense que la réponse est dans la documentation :

le résultat de la comparaison de deux valeurs indéterminées est indéterminée (pas vrai) - nous ne savons pas quelles sont les valeurs, donc nous ne pouvons pas dire qu'ils sont égaux;

indéterminée peut être utilisée pour tester si un tribool est dans un état indéterminé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top