-----Original Message----- From: Chris Hite [mailto:C.Hite@rtsgroup.net]
#include <boost/lambda/bind.hpp> #include <boost/bind.hpp> //comment this line out and it compiles
int foo(const char*);
void test(){ using namespace boost::lambda; bind(foo,_1); }
You've created a conflict among the placeholders. Both bind and lambda::bind declare _1. bind declares its placeholders at global scope, but lambda includes in the lambda namespace. Either use one or the other or don't use the "using namespace boost::lambda". What I usually do is alias the lambda namespace for brevity. #include <boost/lambda/bind.hpp> #include <boost/bind.hpp> namespace bll = boost::lambda; void test() { bll::bind(foo, bll::_1); } There has been talk about merging these, but I'm not sure the status is. Of course, with bind becoming part of the standard that may be difficult. -- Bill --