Инициализация ссылочных переменных с помощью условного оператора

Следующий C++ недопустим, потому что ссылочные переменные требуют инициализаторов:

int& a; // illegal
if (isfive) {
  a = 5;
} else {
  a = 4;
}

Однако MSVC считает, что это нормально:

int& a = isfive ? 5 : 4;

Это означает, что MSVC рассматривает условный оператор как одно выражение, а не расширяет его до оператора if-else.

Всегда ли в C++ правильно инициализировать ссылку с помощью условного оператора?

7
задан Kai 8 February 2012 в 19:29
поделиться