Следующий C++ недопустим, потому что ссылочные переменные требуют инициализаторов:
int& a; // illegal
if (isfive) {
a = 5;
} else {
a = 4;
}
Однако MSVC считает, что это нормально:
int& a = isfive ? 5 : 4;
Это означает, что MSVC рассматривает условный оператор как одно выражение, а не расширяет его до оператора if-else.
Всегда ли в C++ правильно инициализировать ссылку с помощью условного оператора?