Non credo che una tale possibilità sia mai stata presa in considerazione dal comitato del C ++.
Inoltre, sebbene FORTRAN avesse un tipo di sistema di tipo implicito (le variabili che iniziano con "I" e "N" erano interi, tutto il resto era reale) Non riesco a capire come una cosa del genere possa funzionare in un blocco linguaggio strutturato come C ++. Ad esempio, considera un codice come questo:
int f() {
int i;
if (something) {
i = 2.0;
In C o C ++ come attualmente definito il significato di questo è abbastanza chiaro: il i = 2.0
sta prendendo 2.0
, convertendolo in int
, e quindi assegnando il risultante 2
a i
che è stato dichiarato nell'ambito esterno.
Se, tuttavia, hai permesso di omettere auto
, questo apparentemente definisce una nuova variabile nell'ambito del blocco controllato dall'istruzione if
, e tale variabile ( a quanto pare) hanno tipo double
, e i
nello scope esterno manterrebbe il suo valore precedente.
Ora ammetto apertamente che a seconda della conversione implicita da double
a int
qui è probabilmente una cattiva idea - ma è stato parte del linguaggio per così tanto tempo (decenni) che è effettivamente impossibile cambialo ora.
In breve, se si lascia omettere auto
, si otterrebbe quasi certamente una quantità sconosciuta (ma quasi certamente abbastanza grande) di codice esistente. Data l'importanza della retrocompatibilità in C ++, questo sarebbe sufficientemente inaccettabile che non riesco a immaginare che il comitato possa mai dare una seria considerazione.