Boost logo

Boost Users :

Subject: Re: [Boost-users] [fusion] clarification on stateful unary function objects
From: Steven Watanabe (watanabesj_at_[hidden])
Date: 2010-02-28 22:57:38


AMDG

Matthias Vallentin wrote:
> 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:
>

It might work, but I don't advise it. Generally mutable state should
be stored outside the function object, (the function object can contain
a pointer or reference to it).

In Christ,
Steven Watanabe


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net