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