Boost logo

Boost :

From: Giovanni Piero Deretta (gpderetta_at_[hidden])
Date: 2008-07-01 12:39:36

On Tue, Jul 1, 2008 at 5:39 PM, Eric Niebler <eric_at_[hidden]> wrote:
> Giovanni Piero Deretta wrote:
>> - What are exactly the quirks that makes it hard to have full backward
>> compatibility? Well except for 'sig' of course.
> Wish I had written them all down. One that sticks in my mind is whether
> variables are captured by value or by reference. With Phoenix, it's very
> consistent ... all variables are captured by value, always. Lambda tries to
> be a bit more helpful, and it makes the rules more confusing, IMO. Most of
> the time, variables are captured by value, but a variable on the left of an
> assignment is captured by reference. This includes all the assignment
> operators, like plus-assign. So the following is a valid lambda expression:
> int i = 0;
> i += _1;
> But in Phoenix, it would have to be:
> int i = 0;
> ref(i) += _1;

D'uh, I didn't know boost.lambda did that! I always stick a ref() in
these cases. The only "help" that lambda provided, that I knew of, was
with 'cout' (and similar) and array types. So this won't affect me at


Boost list run by bdawes at, gregod at, cpdaniel at, john at