range-based for statement
for(decl : coll){ // decl:声明 coll:容器
statement
}
for(int i : {2, 3, 4, 5, 6}){
cout << i << endl;
}
vector<double> vec;
···
for(auto elem : vec){
cout << elem << endl;
}
for(auto &elem : vec){
elem *= 3;
}
编译器如何解释这种行为呢?
//相当于如下表达式
for(auto _pos = coll.begin(), auto _end = coll.end(); _pos != _end; ++_pos){
decl = *_pos;
statement
}