_>А давайте теперь заменим vector на list, а потом на set... и запишем по старинке...
_>Не забудьте зонтик по канату ходить.
template<class Container>
void doing_some_complex(Container& c)
{
...//здесь у нас контекст
Container::iterator i=c.begin(),endi=c.end();
for(;i!=endi;++i)
{
...//а здесь мы его используем
}
...
}
Проблема не в том как вы обходите контейнер, а в том что писать
функциональный объект (или отдельную функцию) фактически для тела for()
оказывается непрактично

За всё время я наверное раза 2 использовал for_each()
Хотя из этого не следует что он не нужен.