Esiste un modo per evitare il codice binario risultante dal codice this question? Idealmente tramite un errore in fase di compilazione. il codice di esempio dalla domanda:C'è un modo di causare un errore di compilazione se si prova ad assegnare un numero negativo a un contenitore non firmato?
unsigned int nVal = 0;
nVal = -5; // no error!
'errore del compilatore' in fase di esecuzione? * L'assegnazione * avviene in fase di esecuzione. – Nawaz
Ci potrebbe essere un modo sfruttando le regole di conversione convolute, ma significherebbe cambiare il codice in modo che non usi 'unsigned int', ma qualcosa come' EnforcedUnsignedInt' con altre classi intermedie per causare la generazione di codice diverso quando si utilizza l'operatore ' = 'con firmato/non firmato. Verdetto: non pratico/realistico. – tenfour
L'assegnazione iniziale di '0' (che è firmata), piuttosto che' 0u', presumibilmente genererebbe anche l'avviso/errore che si desidera. –