
Hi there,
While trying to use a stateful unary function objects, I stumbled over
and old discussion from 2007 [1]. From the current Fusion documentation,
I understand that the functor passed to the for_each algorithm must
satisfy the Regular Callable Object concept. I presume that regularity,
which I understand as replacing inputs with equal objects results in
equal outputs, here implies that operator()(T& x) must be const. In
other words, mutable function objects are not supported. As pointed out
in [1], it is of course possible to bypass this restriction by defining
the state that needs to changed as mutable.
I was wondering if this is still the correct way to deal with mutable
function objects, as illustrated in the small example below:
#include <iostream>
#include <string>
#include