VC6 довольно старый, и не всегда ... жесткий ... в применении стандарта :-) На самом деле утечка область применения в определенных обстоятельствах, таких как:
for (int i = 0; i < 10; i++) { }
// You can still use 'i' here.
Это привело к некоторой прикольной макро магии , чтобы обойти эту проблему.Если вы используете ISO-совместимый компилятор, обе эти попытки являются недопустимыми.
Начиная с ISO C ++ 11 3.3.3/1
, касаясь введения области видимости блока с {...}
:
Имя, объявленное в блоке, является локальным для этого блока;у него есть область видимости блока.Его потенциальная область действия начинается в точке объявления и заканчивается в конце его блока.
Раздел 6.5.3
охватывает область действия переменных, «созданных» оператором for
:
Если for-init-statement
является объявлением, область действия объявленного имени (имен) распространяется на конец for-statement
.