Il seguente C++ non sono validi perché le variabili di riferimento richiedono initializers:Inizializzazione delle variabili di riferimento con l'operatore condizionale
int& a; // illegal
if (isfive) {
a = 5;
} else {
a = 4;
}
Tuttavia, MSVC sembra pensare questo è bene:
int& a = isfive ? 5 : 4;
Ciò implica per me che MSVC tratta effettivamente l'operatore condizionale come una singola espressione e non lo espande in un'istruzione if-else.
È sempre valido C++ per inizializzare un riferimento utilizzando l'operatore condizionale?
Sono curioso di sapere cosa succede se provi a confrontarlo a livello di assieme ... – beta0x64
Come puoi confrontare su un codice di livello assemblato che compila e codice che non lo fa? –
Cosa fa? Per favore, posta l'assemblea! :-) – Florian