for_each akzeptiert InputIterators:Ist es in Ordnung, Objekte mit std :: for_each zu mutieren?
//from c++ standard
template <class InputIterator, class Function>
Function for_each (InputIterator first, InputIterator last, Function f);
ist es in Ordnung, das Objekt in der Funktion f, wie dies zu ändern:
in VCstruct AddOne
{
void operator()(int & x){x = x + 1;}
};
std::vector<int> vec(10);
std::for_each(vec.begin(),vec.end(),AddOne());
Dieser Code funktioniert ++ 2008 und mit GCC auch, aber ist es auch tragbarer (legaler) Code?
(InputIterators sind nur als rvalue verwendbar sein garantiert, in diesem Fall sind sie als L-Wert verwendet werden, in ADDone des Operators())