Cómo C++20 simplificó el bucle for con inicializador

Fuentes: How C++20 improved the for-loop syntax

El estándar C++20 introdujo una pequeña mejora sintáctica que acerca la forma de escribir bucles for en C++ a la de lenguajes como Python o Lua: la posibilidad de declarar variables en el propio encabezado del range-based for. Hasta C++17, recorrer un contenedor conservando el índice del elemento exigía declarar la variable de contador fuera del bucle o recurrir a un for clásico, lo que añadía una línea extra y ensuciaba el alcance de la función. Con la propuesta 'Range-based for statements with initializer', inspirada en la previa 'If statement with initializer' de C++17, ahora basta con escribir for (int i=0; auto&& it : vec) para obtener simultáneamente el índice y la referencia a cada elemento, igual que hace enumerate en Python o ipairs en Lua.

Este azúcar sintáctico, recogido en el documento P0614R0 del comité de estándares, está pensado precisamente para casos como el listado de cadenas de texto con un contador antepuesto. Más allá del ejemplo trivial, su valor reside en su aplicación sistemática en una base de código: reduce líneas, limita el alcance de las variables de control y elimina la necesidad de escribir vec[i] dentro del cuerpo del bucle. El autor del blog valora el trabajo del comité de estándares de C++ por incorporar mejoras de calidad de vida cuando aportan claridad real, y anima a compartir ejemplos similares de otras incorporaciones recientes del lenguaje.