Se un programma C++ applica l'operatore bitwise-not (~) a un valore booleano, viene richiamato il comportamento non definito?L'uso dell'operatore bitwise non (~) sui valori booleani richiama il comportamento non definito?
E.g. il seguente programma è ben definito?
bool f = false;
bool f2 = ~f; // is f2 guaranteed to be true, or is this UB?
bool t = true;
bool t2 = ~t; // is t2 guaranteed to be false, or is this UB?
(Sì, so che c'è un operatore di che è più adatto a questo genere di cose;! Per scopi di questa domanda ci sarà ignorare la sua esistenza;))
Sto supponendo che '~' promuova l'argomento di 'int' prima di fare qualsiasi cosa, quindi ~ 0 converrebbe in' true'. Non posso essere sicuro al 100% senza guardare. – chris
@chris, hai ragione. –
UB fa 'bool b = 13;' [o qualcosa del genere]? –