Digamos que tengo algo de código C++:¿Por qué C++ impone tal comportamiento en la inicialización de cruces?
if (error)
goto exit;
...
// size_t i = 0; //error
size_t i;
i = 0;
...
exit:
...
entiendo que no debemos usar goto
, pero aún así ¿por qué
size_t i;
i = 0;
compilar mientras que size_t i = 0;
no?
¿Por qué el estándar impone tal comportamiento (mencionado por @SingerOfTheFall)?
Es posible transferir a un bloque, pero no de manera que puentee las declaraciones con la inicialización. Un programa que salta desde un punto donde una variable local con duración de almacenamiento automática no está en el alcance hasta un punto donde está en el alcance está mal formado a menos que la variable tenga el tipo POD (3.9) y se declare sin un inicializador.
¿Qué compilador? –
@Adriano: g ++ 4.1.1 –
Se agregó 'language-design' porque está preguntando sobre la justificación de las decisiones de diseño para un idioma. – Kos