La siguiente C++ no es válida porque las variables de referencia requieren inicializadores:Inicialización de variables de referencia con el operador condicional
int& a; // illegal
if (isfive) {
a = 5;
} else {
a = 4;
}
Sin embargo, MSVC parece pensar que esto está bien:
int& a = isfive ? 5 : 4;
Esto implica para mí que MSVC en realidad trata al operador condicional como una sola expresión y no lo expande en una instrucción if-else.
¿Siempre es válido C++ inicializar una referencia usando el operador condicional?
Tengo curiosidad por saber qué sucede si intentas compararlo en un nivel de ensamblaje ... – beta0x64
¿Cómo se puede comparar con un código de nivel ensamblado que compila y código que no lo hace? –
¿Qué hace? Por favor, publique el montaje! :-) – Florian