Вы можете, очевидно, поместить объявление переменной в цикл for:
for (int i = 0; ...
и я заметил, что вы можете сделать то же самое в операторах if и switch:
if ((int i = f()) != 0) ...
switch (int ch = stream.get()) ...
Но когда я пытаюсь сделать то же самое в цикле while:
while ((int ch = stream.get()) != -1) ...
Компилятор (VС++ 9.0) совсем не нравится.
Это совместимое поведение? Есть ли причина для этого?
EDIT: Я нашел, что могу сделать это:
while (int ch = stream.get() != -1) ...
но из-за правил приоритета, которые интерпретируются как:
while (int ch = (stream.get() != -1)) ...
что я не хочу.