dejando de lado todos los problemas de mantenimiento y lectura, ¿pueden estas líneas de código generar un comportamiento indefinido?¿Usar el operador ternario para inicializar una variable de referencia?
float a = 0, b = 0;
float& x = some_condition()? a : b;
x = 5;
cout << a << ", " << b;
podrían ser aún más simple: '(some_condition()? a: b) = 5; ' – Slava