Boost :: tribool: comportement étrange ou bug?
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 ??
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