Era uma vez, muitas luas atrás, VS6 existia e era popular. No entanto, ele falhou em estar de acordo com vários padrões C ++; o que era razoável na época, pois foi lançado um pouco antes (no mesmo ano) do padrão ser oficialmente lançado; no entanto, aderiu ao rascunho da norma, tanto quanto eu sei.
Um dos padrões que mudou entre o rascunho e o padrão oficial foi o tempo de vida das variáveis de loop for criadas na primeira seção; levando à falha de compilação do código a seguir
{
for (int i=0; i<1; ++i){}
for (int i=0; i<2; ++i){}
}
porque i
foi redefinido pelo segundo loop for.
Enquanto outros compiladores também sofreram esse bug; Destaco o VS6 porque ele permaneceu a única versão do Visual Studio por vários anos após o lançamento do padrão, mas nunca lançou uma atualização para este problema específico; o que significa que teve um impacto mais significativo.
Uma solução para isso é forçar todo o loop for em seu próprio escopo, como você mostrou.