Sto esplorando boost::tribool e sono rimasto sorpreso dal seguente comportamento.Boost :: tribool: comportamento strano o bug?
{
using namespace boost;
boost::tribool t(indeterminate);
assert(t==indeterminate); // This assertion fails!
}
Tuttavia, se faccio questo, l'asserzione passa.
assert(indeterminate(t));
Nessun avvertimento o errore del compilatore in entrambi i casi. Qualcuno ha una buona spiegazione del perché dovrebbe essere ??
E poiché le conversioni indeterminate implicitamente sono false, l'affermazione non riesce. –
"il risultato del confronto di due valori indeterminati è indeterminato". Ahia. Immagino che abbia senso ad un livello, ma non è intuitivo per me. – Roddy
@Roddy, guarda l'implementazione di tribool :: operator ==() sei pronto? restituisce tribool! Odio il ragazzo che ha inviato questo codice per aumentare: D +1 per una buona domanda, questo NON è un comportamento intuitivo! –