
Jaakko Jarvi <jajarvi@cs.indiana.edu> 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