Quasi ogni parola che potresti pensare di aggiungere come parola chiave a una lingua è stata quasi sicuramente utilizzata come nome di variabile o in qualche altra parte del codice di lavoro. Questo codice verrebbe infranto se la parola fosse trasformata in parola chiave.
La cosa incredibilmente fortunata 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é digitare:
auto int i=0;
quando
int i=0;
significava esattamente la stessa cosa?
Suppongo che da qualche parte sul pianeta ci fosse una piccola quantità di codice che utilizzava "auto" alla vecchia maniera. Ma potrebbe essere risolto rimuovendo "auto" e funzionerebbe di nuovo. Quindi è stata una scelta abbastanza ovvia riutilizzare la parola chiave.
Mi capita anche di pensare che sia un significato più chiaro. Se hai lavorato con varianti e simili, quando vedi varpuoi pensare che la dichiarazione sia in qualche modo meno tipizzata rispetto a se hai premuto tu stesso tutti i tasti sulla tastiera per specificare il tipo di variabile. Per me, autochiarisco che stai chiedendo al compilatore di dedurre automaticamente il tipo, che è altrettanto forte come se lo avessi specificato tu stesso. Quindi è stata davvero una pausa molto 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 otterrai un errore come
errore C3530: 'auto' non può essere combinato con nessun altro specificatore di tipo
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 C ++ veramente vecchio farebbero iun int(come farebbe se si fosse interrotto auto- la dichiarazione di default era int). Se hai trascorso 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 doubledato che è quello che è 4.3. (O forse un float, sono ancora in modalità Giorno di Santo Stefano, ma il punto è, non un int.) Questo potrebbe introdurre bug sottili in tutta la tua app. E senza avvertimenti o errori dal compilatore. Le persone in questa barca dovrebbero cercare globalmente per autoassicurarsi che non lo stessero usando alla vecchia maniera prima di passare a un compilatore C ++ 11. Fortunatamente, tale codice è estremamente raro.
autopotrebbe rompere la compatibilità all'indietro, ma, a seconda della frequenza con cuivarviene utilizzato come nome variabile rispetto alla frequenza con cui laautoparola chiave viene utilizzata nel codice pre-11, il comitato potrebbe aver ritenuto che interrompesse la compatibilità in modo meno drammatico rispetto all'introduzione di un nuovo parola chiave sarebbe.