|
Boost : |
From: David Abrahams (dave_at_[hidden])
Date: 2004-03-09 12:17:12
Jaakko Jarvi <jajarvi_at_[hidden]> writes:
> On Mar 9, 2004, at 11:18 AM, David Abrahams wrote:
>
>>
>> Lambda docs say:
>>
>> "When an actual argument is supplied for a placeholder, the
>> parameter passing mode is always by reference"
>>
>> Yet when I changed the following code from using boost::bind to
>> boost::lambda, I got complaints that Field is an abstract class and
>> can't be copied.
>>
>> void (self_t::* insert_)(Field const&) = &self_t::insert;
>> std::for_each(fields.begin(), fiends.end(), bind(insert_, this,
>> _1));
>>
>> What gives?
>>
>
> Can you post (email directly) a full example. I couldn't immediately
> get similar
> code to fail.
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/bind.hpp>
using namespace boost::lambda;
struct X
{
virtual void f() = 0;
};
struct Y : X
{
void f() {};
};
struct Z
{
void g(X const& x)
{
}
void h(X const& x)
{
bind(&Z::g, this, _1)(x);
}
};
-- Dave Abrahams Boost Consulting www.boost-consulting.com
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk