Quasi ogni parola che potresti pensare di aggiungere come parola chiave a una lingua è quasi certamente stata usata come nome di una variabile o qualche altra parte del codice funzionante. Questo codice verrebbe interrotto se si rendesse quella parola una parola chiave.
La cosa incredibilmente fortunata su auto
è che era già una parola chiave, quindi le persone non avevano variabili con quel nome, ma nessuno lo usava, perché era l'impostazione predefinita. Perché scrivi:
auto int i=0;
quando
int i=0;
significava esattamente la stessa cosa?
Suppongo che da qualche parte sul pianeta ci sia una piccola quantità di codice che usa 'auto' alla vecchia maniera. Ma potrebbe essere risolto rimuovendo l''auto' e funzionerebbe di nuovo. Quindi è stata una scelta abbastanza ovvia per riutilizzare la parola chiave.
Penso anche che sia un significato più chiaro. Se hai lavorato con varianti e simili, quando vedi var
potresti pensare che la dichiarazione sia in qualche modo meno strongmente tipizzata rispetto a quando hai premuto tutti i tasti tu stesso sulla tastiera per specificare il tipo di variabile. Per me, auto
rende più chiaro che stai chiedendo al compilatore di dedurre automaticamente il tipo, che è altrettanto strong come se lo avessi specificato tu stesso. Quindi è stata davvero una rottura fortunata che ha reso disponibile un buon nome al comitato.
Per chiarire la (piccola) rottura:
Se tu avessi
auto int i=0;
e ho provato a compilare con un compilatore C ++ 11, ora riceverai un errore come
error C3530: 'auto' cannot be combined with any other type-specifier
Questo è banale, basta rimuovere l'auto o l'int e ricompilare.
C'è un problema più grande però. Se tu avessi
auto i = 4.3;
C e il vecchio C ++ renderebbero i
an int
(come sarebbe se tu avessi lasciato fuori auto
- la dichiarazione di default era int
). Se hai passato molto tempo senza compilare questo codice, o hai utilizzato vecchi compilatori, potresti avere un po 'di questo codice, almeno in teoria. C ++ 11 lo renderebbe un double
poiché è ciò che è 4.3. (O forse un float
, sono ancora in modalità Boxing Day, ma il punto è, non un int
.) Questo potrebbe introdurre bug sottili in tutta la tua app. E senza alcun avvertimento o errore dal compilatore. Le persone in questa barca devono cercare globablly per auto
per assicurarsi che non la usassero alla vecchia maniera prima di passare a un compilatore C ++ 11. Fortunatamente, tale codice è estremamente raro.