Frage

Ich erforsche boost :: tribool und wurde durch das folgende Verhalten überrascht.

{
using namespace boost;

boost::tribool t(indeterminate);

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

Allerdings, wenn ich das tue, die assert geht.

assert(indeterminate(t));

Keine Compiler-Warnungen oder Fehler in beiden Fällen. Wer eine gute Erklärung, warum dies sein sollte ??

War es hilfreich?

Lösung

Ich denke, die Antwort ist in der Dokumentation :

das Ergebnis beim Vergleich von zwei unbestimmten Werten unbestimmt ist (nicht wahr) - wir wissen nicht, was die Werte sind, so dass wir nicht sagen können, dass sie gleich sind;

unbestimmt Funktion kann wenn ein tribool in einem unbestimmten Zustand zu Test verwendet werden soll.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top