¿Alguna vez pasó por el proceso de reemplazar el BOOST_FOREACH
por el bucle for
basado en el rango? ¿Hay algún truco al hacerlo mecánicamente (es decir, no hacer un estudio profundo del código).¿Alguna experiencia con el reemplazo de BOOST_FOREACH por rango para el ciclo de C++ 11?
Antecedentes: Tengo fuentes con aproximadamente 250K líneas, compiladas con Microsoft VC++ 10 (Visual Studio 2010). El código usa también BOOST_FOREACH de la biblioteca de impulso. Solo estoy probando el VC++ 11 (Visual Studio 2012 RC) que implementa también el bucle for
basado en rango con el auto
.
Hasta ahora, me he encontrado con la situación en la que se declaró el elemento fuera del BOOST_FOREACH
(sin declaración en el paréntesis):
BOOST_FOREACH (element, container) {
...
}
... y se esperaba que el element
a tener el valor establecido en el loop después del break
. ¿Puedes recordar problemas similares ?
Cuando el BOOST_FOREACH
contiene la declaración, ¿elegiría reemplazar el tipo explícito por auto
? ¿Hay alguna ventaja de hacerlo cuando uno simplemente reescribe mecánicamente el BOOST_FOREACH
en lugar de dejar la declaración explícita allí?
Gracias por su ayuda, Petr
Bueno, entiendo que 'auto' es el ganador cuando se ingresa un nuevo código, como su escritura. Sin embargo, me siento un poco más seguro al dejar el tipo explícito no reemplazado por 'auto'.En primer lugar, tomaría más esfuerzo, y en segundo lugar, podría introducir un error humano al editar. (Hay una gran cantidad de 'BOOST_FOREACH', y no puedo ver el código para cada caso). De todos modos, ¿consideraría mi decisión de mantener el tipo de datos explícito en los nuevos bucles' for' como no- ¿problemático? – pepr
@pepr Acepto que mantener el tipo explícito generalmente será la mejor opción; deberás ser consciente de ello si cambias los tipos de contenedor más tarde. – ecatmur