Le mot-clé auto demande simplement au compilateur de déduire le type de la variable de l'initialisation.
Même un compilateur pré-C++0x sait quel est le type d'une expression (d'initialisation), et le plus souvent, vous pouvez voir ce type dans les messages d'erreur.
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int>s;
s.push_back(11);
s.push_back(22);
s.push_back(33);
s.push_back(55);
for (int it=s.begin();it!=s.end();it++){
cout<<*it<<endl;
}
}
Line 12: error: cannot convert '__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<int*, __gnu_norm::vector<int, std::allocator<int> > >, __gnu_debug_def::vector<int, std::allocator<int> > >' to 'int' in initialization
Le mot- clé auto vous permet simplement de tirer parti de cette connaissance - si vous (compilateur) connaissez le bon type, choisissez simplement pour moi !