
Boost : 
From: Vladimir Prus (ghost_at_[hidden])
Date: 20040426 02:21:32
Hi Jaakko,
>> struct functor {
>> typedef int result_type;
>> int operator()(int i) const { return i+1; };
>> };
>>
>> transform_iterator<functor, vector<int>::iterator> it(v.begin());
>> (cout << _1)(*it);
>>
>> This does not compile, because operator* of transform_iterator return
>> rvalue
>> which can't be bound to nonconst reference that operator() of the
>> lambda
>> expression accepts.
> Forwarding problem again :(
Alas.
> For a limited number of placeholders (up until _3) or so,
> we could provide the extra overloads to make this problem go away.
Yes, please! I did not ever tried to write BLL expressions with 3
parameters, so I'd really like perfect forwarding limited for 3 arguments.
> Nary operator() requires 2^N overloads, so for current BLL it is
> feasible, for bind with placeholders up to _9 (or more?) not really.
Right. I think what is needed is *some* solution which would allow to
explore FP, not necessary allow using FP in all situations. Perfect
forwarding for 3 arguments looks fine.
 Volodya
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk