for_each accetta InputIterators:È consentito modificare gli oggetti con std :: for_each?
//from c++ standard
template <class InputIterator, class Function>
Function for_each (InputIterator first, InputIterator last, Function f);
E 'ok per cambiare l'oggetto in funzione f, in questo modo:
struct AddOne
{
void operator()(int & x){x = x + 1;}
};
std::vector<int> vec(10);
std::for_each(vec.begin(),vec.end(),AddOne());
Questo codice funziona in VC++ 2008 e anche con GCC, ma è anche un codice (legale) portatile?
(InputIterators sono garantite solo per essere utilizzabile come rvalue, in questo caso vengono usati come valore assegnabile in operatore di AddOne())