Hello, I've got some code that works ok with boost::bind and I'm trying to make it work with lambda::bind but am getting compilation errors. Why not leave it as-is? Just above the problem area of code I have another lambda expression and because I've already introduced lambda's _1 placeholder into the current scope and didn't want ambiguities arising so want to convert it over. I'm using VC++ 7.1 (2003) and Boost 1.35.0. I've created a stripped down test program to show the compilation problem: #include <algorithm> #include <memory> #include <string> #include <vector> #include <boost/bind.hpp> #include <boost/utility.hpp> #include <boost/lambda/bind.hpp> #include <boost/lambda/lambda.hpp> class GridItem : boost::noncopyable { public: bool AddOption(const char* item,bool unique = true) { // implementation code omitted! return true; } }; void GoodOldBoostBind() { std::auto_ptr<GridItem> item(new GridItem()); std::vector<std::string> options; std::for_each(options.begin(),options.end(), boost::bind(GridItem::AddOption,boost::ref(item),boost::bind(std::string::c_str,_1),true)); } void LambdaBind() { std::auto_ptr<GridItem> item(new GridItem()); std::vector<std::string> options; using namespace boost::lambda; using boost::lambda::_1; std::for_each(options.begin(),options.end(), bind(GridItem::AddOption,boost::ref(item),bind(std::string::c_str,_1),true)); // COMPILE ERROR ON ABOVE } int main() { } The error is: c:\releases\lib\boost\boost_1_35_0\include\boost\bind.hpp(338) : error C2664: 'R boost::_mfi::mf2<R,T,A1,A2>::operator ()<std::auto_ptr<_Ty>>(const U &,A1,A2) const' : cannot convert parameter 2 from 'boost::lambda::lambda_functor<T>' to 'const char *' with [ R=bool, T=GridItem, A1=const char *, A2=bool, _Ty=GridItem, U=std::auto_ptr<GridItem> ] and [ T=boost::lambda::lambda_functor_base<boost::lambda::action<2,boost::lambda::function_action<2>>,boost::tuples::tuple<const boost::lambda::detail::bind_traits<const char *(__thiscall std::basic_string<char,std::char_traits<char>,std::allocator<char>>::* const )(void) const>::type,const boost::lambda::detail::bind_traits<const boost::lambda::placeholder1_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type,boost::lambda::detail::bind_traits<boost::tuples::null_type>::type>> ] No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called Can anyone help with this? Thanks, Pete