diff --git a/include/boost/lambda/detail/actions.hpp b/include/boost/lambda/detail/actions.hpp index 995a79a..3be5c99 100644 --- a/include/boost/lambda/detail/actions.hpp +++ b/include/boost/lambda/detail/actions.hpp @@ -42,7 +42,11 @@ template class explicit_return_type_action {}; // action for preventing the expansion of a lambda expression struct protect_action {}; - + +// action for curried functions, I stands for the number of curried arguments +// (can be 1 or 2) +template class curry_action {}; + template class return_void_action; namespace detail { @@ -57,11 +61,6 @@ namespace detail { // This argument is only relevant in the return type deduction code template class function_action {}; -// lambda_functor_action arise when the target function in a bind expression -// is a lambda functor. We must use a separate action type to notify -// the return type deduction system, but the apply functions of -// function_action struct work just fine -template class lambda_functor_action : public function_action {}; @@ -84,12 +83,18 @@ public: } }; + +template struct is_lambda_functor; template class function_action<3, T> { public: + template static RET apply(A1& a1, A2& a2, A3& a3) { + return function_adaptor::type>::template apply (a1, a2, a3); + + } };