for_each accepte InputIterators:Est-il acceptable de muter des objets avec std :: for_each?
//from c++ standard
template <class InputIterator, class Function>
Function for_each (InputIterator first, InputIterator last, Function f);
est-il autorisé à changer l'objet en fonction f, comme ceci:
struct AddOne
{
void operator()(int & x){x = x + 1;}
};
std::vector<int> vec(10);
std::for_each(vec.begin(),vec.end(),AddOne());
Ce code fonctionne en VC++ 2008 et aussi avec GCC, mais est-ce aussi portable (légal) code?
(InputIterators ne sont garantis d'être utilisables comme rvalue, dans ce cas, ils sont utilisés comme lvalue dans l'opérateur de ajouterUn())