Recientemente me preguntaba por qué auto
se eligió la palabra clave en C ++ 11 para marcar una variable cuyo tipo debe ser inferido por el compilador, como en
auto x = 1;
Ya que
var
parece más común en otros lenguajes de programación (por ejemplo, C #, Scala, JavaScript) y- Por lo que yo entiendo, la nueva semántica de las
auto
pausas de compatibilidad con versiones anteriores (rara vez se usaba, pero tenía un significado diferente en revisiones anteriores de C ++, ver, por ejemplo, aquí )
Quería preguntar si había una razón especial para elegir auto
(a favor var
o en cualquier otra palabra clave). ¿Hubo alguna discusión específica sobre este tema antes de que se lanzara el estándar C ++ 11?
Además, ¿hay posibles incompatibilidades que debemos tener en cuenta al volver a compilar código C ++ heredado con un compilador C ++ 11?
auto
vs var
es a qué se refiere el 90% de su texto, y esa pregunta no tiene un resultado definitivo. (aunque no fui yo quien votó para cerrar)
auto
se propuso para C ++ antes de que var
se introdujera en C #, por lo que la pregunta debería ser por qué C # no usa auto. var tiene un significado diferente en JavaScript y Scala
auto
podría romper la compatibilidad con versiones anteriores, pero, dependiendo de la frecuencia con la quevar
se usa como nombre de variable en comparación con la frecuencia con la queauto
se usa la palabra clave en el código anterior al 11, el comité podría haber opinado que rompe la compatibilidad de manera menos dramática que la introducción de un nuevo palabra clave lo haría.