for_each acepta InputIterators:¿Se puede mutar objetos con std :: for_each?
//from c++ standard
template <class InputIterator, class Function>
Function for_each (InputIterator first, InputIterator last, Function f);
¿Está bien para cambiar el objeto de la función f, de esta manera:
struct AddOne
{
void operator()(int & x){x = x + 1;}
};
std::vector<int> vec(10);
std::for_each(vec.begin(),vec.end(),AddOne());
Este código funciona en VC++ 2008 y también con GCC, pero es también código portátil (legal)?
(InputIterators solamente se garantiza que sea utilizable como rvalue, en este caso se utilizan como valor-I en el operador de AddOne())