for (int i = 0; i < 10; i++)
{
Foo();
}
int i = 10; // error, 'i' already exists
----------------------------------------
for (int i = 0; i < 10; i++)
{
Foo();
}
i = 10; // error, 'i' doesn't exist
По моему пониманию сферы применения, первый пример должен быть точным. Тот факт, что ни один из них не разрешен, кажется еще более странным. Разумеется, "i" - либо в сфере охвата, либо нет.
Есть ли что-то неочевидное в области видимости, которую я не понимаю, что означает, что компилятор действительно не может это решить? Или это всего лишь случай использования компилятора в nanny-state?