boost::lambda: how to create indirect functor

prerequisites: struct C { void func(int i) {} }; void indirect(boost::function<void(C*)> f) { static C c; f(&c); } I need a functor that takes int and calls "indirect" passing there &C::func bound with that int. I imagine a solution like: boost::function<void(int)> result_functor = bind(indirect, bind(&C::func, protect(_1), _1)); receiving compilation error: "could not deduce argument" deep inside lambda library thanks -- View this message in context: http://www.nabble.com/boost%3A%3Alambda%3A-how-to-create-indirect-functor-tp... Sent from the Boost - Users mailing list archive at Nabble.com.

AMDG @ wrote:
prerequisites:
struct C { void func(int i) {} };
void indirect(boost::function<void(C*)> f) { static C c; f(&c); }
I need a functor that takes int and calls "indirect" passing there &C::func bound with that int.
I imagine a solution like:
boost::function<void(int)> result_functor = bind(indirect, bind(&C::func, protect(_1), _1));
receiving compilation error: "could not deduce argument" deep inside lambda library
Lambda doesn't allow you to mix arguments from multiple nested binds. In other words, you would need to use protect on the inner bind, to keep it from being evaluated immediately, but that causes _1 to refer to the inner _1, not the outer _1. In Christ, Steven Watanabe
participants (2)
-
@
-
Steven Watanabe