Domanda

boost :: tribool e sono rimasto sorpreso dal seguente comportamento.

{
using namespace boost;

boost::tribool t(indeterminate);

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

Tuttavia, se faccio questo, l'asserzione passa.

assert(indeterminate(t));

Non ci sono avvisi del compilatore o errori in entrambi i casi. Qualcuno ha una buona spiegazione del perché questo dovrebbe essere ??

È stato utile?

Soluzione

Credo che la risposta sia nella documentazione :

il risultato del confronto tra due valori indeterminati è indeterminato (non è vero) - non sappiamo quali sono i valori, quindi non possiamo dire che sono uguali;

indeterminato funzione può essere utilizzato per verificare se un tribool è in uno stato indeterminato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top