using lambda's pointer to member function and boost::function

Hi, I'm trying to use boost::function with a functor defined with boost::lambda that uses a dereference to a pointer to member function, without success. Here goes what I've done up to now: struct aux { aux() : b(1) {} int a(int x) const { return x+5; } int b; }; int main() { aux a; int x = 4; // This compiles and executes as expected, we're dealing with a pointer to an attribute. boost::function<int(const aux &)> fa = &_1->*&aux::b; int ia = fa(a); cout << ia << endl; // This should compile, but doesn't boost::function<int(const aux &)> fm1 = (&protect(_1)->*&aux::a)(x); int im1 = fm1(a); cout << im1 << endl; // This works, but it's not what we want // To mimic c++0x auto type (with help of g++'s typeof) #define auto(var, def) typeof(def) var = def auto(fm2, &_1->*&aux::a); int im2 = fm2(a)(x); cout << im2 << endl; return 0; } By using protect I want to postpone the evaluation of _1 so that it'll occur after the evaluation of aux::a arguments, but it doesn't work. Does anyone can help me? Thanks, Rodolfo Lima.
participants (1)
-
Rodolfo Lima