Darren Cook
struct Foo { int fDataMember;}
int main() { std::vector<Foo> foos; Foo fo; std::find_if(foos.begin(), foos.end(), _1->fDataMember == fo.fDataMember); //<-- won't compile; }
As your vector is of Foo, not Foo*, did you mean "_1.fDataMember" ?
If so, you can do this: std::find_if(foos.begin(), foos.end(), bind(&Foo::fDataMember,_1) == fo.fDataMember);
That assumes: #include
#include using namespace boost::lambda; I imagine you're having trouble with "_1->fDataMember".
I didn't realize there was a limitation when using "->". Surely there must already be something in the lambda library to deal with this? It seems like something that must come up a lot.
Have you tried something along the lines of: (&_1)->*&Foo::fDataMember == var(fo.fDataMember) or bind(&Foo::fDataMember,_1) == var(fo.fDataMember) ?? -- Dave Abrahams Boost Consulting www.boost-consulting.com