Presque chaque mot que vous pourriez penser ajouter comme mot-clé à une langue a presque certainement été utilisé comme nom de variable ou autre partie du code de travail. Ce code serait rompu si vous faisiez de ce mot un mot-clé.
La chose incroyablement chanceuse auto
est qu'il s'agissait déjà d'un mot-clé, donc les gens n'avaient pas de variables avec ce nom, mais personne ne l'a utilisé, car c'était la valeur par défaut. Pourquoi taper:
auto int i=0;
quand
int i=0;
signifiait exactement la même chose?
Je suppose que quelque part sur la planète, il y avait une petite quantité de code qui utilisait «auto» à l'ancienne. Mais cela pourrait être corrigé en supprimant l '«auto» et cela fonctionnerait à nouveau. C'était donc un choix assez évident de réutiliser le mot-clé.
Je pense aussi que c'est un sens plus clair. Si vous avez travaillé avec des variantes et autres, quand vous voyez, var
vous pouvez penser que la déclaration est en quelque sorte moins fortement tapée que si vous avez appuyé vous-même sur toutes les touches du clavier pour spécifier le type de la variable. Pour moi, auto
il est plus clair que vous demandez au compilateur de déduire automatiquement le type, qui est tout aussi fort que si vous l'aviez spécifié vous-même. Ce fut donc vraiment une pause très chanceuse qui a mis un bon nom à la disposition du comité.
Pour clarifier la (petite) rupture:
Si tu avais
auto int i=0;
et essayé de compiler avec un compilateur C ++ 11, vous obtiendrez maintenant une erreur telle que
erreur C3530: 'auto' ne peut pas être combiné avec un autre spécificateur de type
C'est trivial, vous supprimez simplement l'auto ou l'int et recompilez.
Il y a cependant un problème plus important. Si tu avais
auto i = 4.3;
C et le très ancien C ++ feraient i
un int
(comme ce serait le cas si vous vous étiez arrêté auto
- la déclaration par défaut était int
). Si vous êtes resté très longtemps sans compiler ce code, ou si vous avez utilisé d'anciens compilateurs, vous pourriez avoir une partie de ce code, au moins en théorie. C ++ 11 en ferait un double
puisque c'est ce que 4.3 est. (Ou peut-être un float
, je suis toujours en mode Boxing Day, mais ce n'est pas un an int
.) Cela pourrait introduire de subtils bugs dans votre application. Et sans avertissements ni erreurs du compilateur. Les personnes dans ce bateau doivent rechercher globalement pour auto
s'assurer qu'elles ne l'utilisent pas à l'ancienne avant de passer à un compilateur C ++ 11. Heureusement, un tel code est extrêmement rare.
auto
pourrait rompre la compatibilité descendante, mais, selon la fréquence d'var
utilisation en tant que nom de variable par rapport à la fréquence d'utilisation duauto
mot-clé dans le code antérieur à 11, le comité aurait pu penser qu'il rompt la compatibilité moins dramatiquement que l'introduction d'un nouveau mot-clé serait.