Érase una vez, hace muchas lunas, VS6 existía y era popular. Sin embargo, falló en ajustarse a varios estándares de C ++; lo cual era razonable en ese momento, ya que fue lanzado justo antes (el mismo año) que el estándar fue lanzado oficialmente; sin embargo, se adhirió al borrador de la norma que yo sepa.
Uno de los estándares que cambió entre el borrador y el estándar oficial fue la vida útil de las variables del ciclo for creadas en la primera sección; lo que provoca que el siguiente código no se compile
{
for (int i=0; i<1; ++i){}
for (int i=0; i<2; ++i){}
}
porque i
fue redefinido por el segundo bucle for.
Mientras que otros compiladores también sufrieron este error; Destaco el VS6 porque siguió siendo la única versión de Visual Studio durante varios años después del lanzamiento del estándar, pero nunca lanzó una actualización para este problema en particular; lo que significa que tuvo un impacto más significativo.
Una solución a esto es forzar todo el bucle for a su propio alcance, como ha mostrado.