boost::lambda::bind with shared_ptr

Is there any way using BLL's bind to bind to shared_ptrs in a container? e.g.: class MyClass { public: std::string MyFunc() { return str; } private: string str; }; vector<shared_ptr<MyClass> > v; find_if( v.begin(), v.end(), boost::lambda::bind( &MyClass::MyFunc, _1 ) == string( "steve" ) ); In visual studio with the scenario I get errors indicating it can't find MyFunc in the interface for shared_ptr, which you'd expect, except for the fact that boost::bind works with shared poiners. Is it the case that boost::lambda::bind doesn't? If so, that's unfortunate as it rules out using lambda with containers of shared_ptrs in a lot of cases. What am I missing? sklug

Steven S. Klug wrote:
Is there any way using BLL's bind to bind to shared_ptrs in a container?
e.g.:
class MyClass { public: std::string MyFunc() { return str; }
private: string str; };
vector<shared_ptr<MyClass> > v;
find_if( v.begin(), v.end(), boost::lambda::bind( &MyClass::MyFunc, _1 ) == string( "steve" ) );
boost::lambda::bind does not support shared_ptrs directly as does boost::bind, however you can easily get the same behavior by using the boost::lambda::_1 deference capability: find_if( v.begin(), v.end(), boost::lambda::bind( &MyClass::MyFunc, *_1 ) == string( "steve" ) ); KevinH -- Kevin Heifner heifner @ ociweb.com http://heifner.blogspot.com Object Computing, Inc. (OCI) www.ociweb.com
participants (2)
-
Kevin Heifner
-
Steven S. Klug