Boost :: tribool: merkwürdiges Verhalten oder Bug?
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 ??
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