Одним из способов было бы заменить их std::for_each
и лямбдами, где это возможно. GCC 4.6 и MSVC10 поддерживают лямбда-выражения.
// before:
for(auto& e : values){
std::cout << e << " ";
}
// after:
std::for_each(values.begin(), values.end(),
[](a_type& e){
std::cout << e << " ";
});
Единственное предостережение в том, что вам необходимо ввести имя элемента (здесь a_type
), и что вы не можете использовать структуры потока управления (break
, continue
, return
).
Другим способом было бы, когда вам нужны эти структуры потока управления, использовать старые циклы for. С ними все в порядке, особенно с auto
для вывода типа итератора.
Еще одним способом может быть использование бета-версии Visual Studio 11, когда она выйдет, она поддерживает циклы на основе диапазона для IIRC. :)