diff --git a/include/boost/lambda/detail/bind_functions.hpp b/include/boost/lambda/detail/bind_functions.hpp index ccbc63a..4cf7f29 100644 --- a/include/boost/lambda/detail/bind_functions.hpp +++ b/include/boost/lambda/detail/bind_functions.hpp @@ -1,5 +1,7 @@ // -- bind_functions.hpp -- Boost Lambda Library // +// Copyright (C) 1999, 2000 Jaakko Järvi (jaakko.jarvi@cs.utu.fi) +// // Permission to copy, use, sell and distribute this software is granted // provided this copyright notice appears in all copies. // Permission to modify the code and to distribute modified code is granted @@ -19,6 +21,8 @@ namespace boost { namespace lambda { +using boost::tuple; + template struct select_action { typedef typename detail::IF< @@ -38,7 +42,7 @@ inline const lambda_functor< lambda_functor_args< action<1, function_action<1> >, - detail::bind_tuple_mapper::type, + typename detail::bind_tuple_mapper::type, combine_arities::value > > @@ -47,11 +51,11 @@ bind(const Arg1& a1) { lambda_functor< lambda_functor_args< action<1, function_action<1> >, - detail::bind_tuple_mapper::type, + typename detail::bind_tuple_mapper::type, combine_arities::value > > - ( detail::bind_tuple_mapper::type + ( typename detail::bind_tuple_mapper::type (a1) ); } @@ -61,7 +65,7 @@ inline const lambda_functor< lambda_functor_args< action<1, function_action<1> >, - detail::bind_tuple_mapper::type, + typename detail::bind_tuple_mapper::type, combine_arities<>::value > > @@ -70,11 +74,11 @@ bind(Result(&a1)()) { lambda_functor< lambda_functor_args< action<1, function_action<1> >, - detail::bind_tuple_mapper::type, + typename detail::bind_tuple_mapper::type, combine_arities<>::value > > - ( detail::bind_tuple_mapper::type + ( typename detail::bind_tuple_mapper::type (a1) ); } @@ -86,7 +90,7 @@ inline const lambda_functor< lambda_functor_args< action<2, function_action<2> >, - detail::bind_tuple_mapper::type, + typename detail::bind_tuple_mapper::type, combine_arities::value > > @@ -95,11 +99,11 @@ bind(const Arg1& a1, const Arg2& a2) { lambda_functor< lambda_functor_args< action<2, function_action<2> >, - detail::bind_tuple_mapper::type, + typename detail::bind_tuple_mapper::type, combine_arities::value > > - ( detail::bind_tuple_mapper::type + ( typename detail::bind_tuple_mapper::type (a1, a2) ); } @@ -109,7 +113,7 @@ inline const lambda_functor< lambda_functor_args< action<2, function_action<2> >, - detail::bind_tuple_mapper::type, + typename detail::bind_tuple_mapper::type, combine_arities::value > > @@ -118,11 +122,11 @@ bind(Result(&a1)(Par1), const Arg2& a2) { lambda_functor< lambda_functor_args< action<2, function_action<2> >, - detail::bind_tuple_mapper::type, + typename detail::bind_tuple_mapper::type, combine_arities::value > > - ( detail::bind_tuple_mapper::type + ( typename detail::bind_tuple_mapper::type (a1, a2) ); } @@ -134,7 +138,9 @@ inline const lambda_functor< lambda_functor_args< action<3, function_action<3> >, - detail::bind_tuple_mapper::type, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3 + >::type, combine_arities::value > > @@ -143,11 +149,15 @@ bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) { lambda_functor< lambda_functor_args< action<3, function_action<3> >, - detail::bind_tuple_mapper::type, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3 + >::type, combine_arities::value > > - ( detail::bind_tuple_mapper::type + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3 + >::type (a1, a2, a3) ); } @@ -157,7 +167,7 @@ inline const lambda_functor< lambda_functor_args< action<3, function_action<3> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2), const Arg2, const Arg3 >::type, combine_arities::value @@ -168,13 +178,13 @@ bind(Result(&a1)(Par1, Par2), const Arg2& a2, const Arg3& a3) { lambda_functor< lambda_functor_args< action<3, function_action<3> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2), const Arg2, const Arg3 >::type, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< Result(&)(Par1, Par2), const Arg2, const Arg3 >::type (a1, a2, a3) @@ -188,7 +198,7 @@ inline const lambda_functor< lambda_functor_args< action<4, function_action<4> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4 >::type, combine_arities::value @@ -199,13 +209,13 @@ bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) { lambda_functor< lambda_functor_args< action<4, function_action<4> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4 >::type, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4 >::type (a1, a2, a3, a4) @@ -218,7 +228,7 @@ inline const lambda_functor< lambda_functor_args< action<4, function_action<4> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4 >::type, combine_arities::value @@ -230,13 +240,13 @@ bind(Result(&a1)(Par1, Par2, Par3), const Arg2& a2, const Arg3& a3, lambda_functor< lambda_functor_args< action<4, function_action<4> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4 >::type, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4 >::type (a1, a2, a3, a4) @@ -250,7 +260,7 @@ inline const lambda_functor< lambda_functor_args< action<5, function_action<5> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5 >::type, combine_arities::value @@ -262,13 +272,13 @@ bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, lambda_functor< lambda_functor_args< action<5, function_action<5> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5 >::type, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5 >::type (a1, a2, a3, a4, a5) @@ -281,7 +291,7 @@ inline const lambda_functor< lambda_functor_args< action<5, function_action<5> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4, const Arg5 >::type, @@ -294,14 +304,14 @@ bind(Result(&a1)(Par1, Par2, Par3, Par4), const Arg2& a2, const Arg3& a3, lambda_functor< lambda_functor_args< action<5, function_action<5> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4, const Arg5 >::type, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4, const Arg5 >::type @@ -317,7 +327,7 @@ inline const lambda_functor< lambda_functor_args< action<6, function_action<6> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 >::type, combine_arities::value @@ -329,14 +339,14 @@ bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, lambda_functor< lambda_functor_args< action<6, function_action<6> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 >::type, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 >::type (a1, a2, a3, a4, a5, a6) @@ -350,7 +360,7 @@ inline const lambda_functor< lambda_functor_args< action<6, function_action<6> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 >::type, @@ -363,14 +373,14 @@ bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5), const Arg2& a2, lambda_functor< lambda_functor_args< action<6, function_action<6> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 >::type, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 >::type @@ -386,7 +396,7 @@ inline const lambda_functor< lambda_functor_args< action<7, function_action<7> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7 >::type, @@ -399,14 +409,14 @@ bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, lambda_functor< lambda_functor_args< action<7, function_action<7> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7 >::type, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7 >::type @@ -421,7 +431,7 @@ inline const lambda_functor< lambda_functor_args< action<7, function_action<7> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7 >::type, @@ -435,14 +445,14 @@ bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2& a2, lambda_functor< lambda_functor_args< action<7, function_action<7> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7 >::type, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7 >::type @@ -458,7 +468,7 @@ inline const lambda_functor< lambda_functor_args< action<8, function_action<8> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 >::type, @@ -471,14 +481,14 @@ bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, lambda_functor< lambda_functor_args< action<8, function_action<8> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 >::type, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 >::type @@ -493,7 +503,7 @@ inline const lambda_functor< lambda_functor_args< action<8, function_action<8> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 >::type, @@ -507,7 +517,7 @@ bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2& a2, lambda_functor< lambda_functor_args< action<8, function_action<8> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 @@ -515,7 +525,7 @@ bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2& a2, combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 >::type @@ -531,7 +541,7 @@ inline const lambda_functor< lambda_functor_args< action<9, function_action<9> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9 >::type, @@ -547,7 +557,7 @@ bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, lambda_functor< lambda_functor_args< action<9, function_action<9> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9 >::type, @@ -556,7 +566,7 @@ bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, >::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9 >::type @@ -572,7 +582,7 @@ inline const lambda_functor< lambda_functor_args< action<9, function_action<9> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9 @@ -587,7 +597,7 @@ bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), lambda_functor< lambda_functor_args< action<9, function_action<9> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9 @@ -595,7 +605,7 @@ bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), combine_arities::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9 @@ -612,7 +622,7 @@ inline const lambda_functor< lambda_functor_args< action<10, function_action<10> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9, const Arg10 >::type, @@ -628,7 +638,7 @@ bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, lambda_functor< lambda_functor_args< action<10, function_action<10> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9, const Arg10 >::type, @@ -637,7 +647,7 @@ bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, >::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9, const Arg10 >::type @@ -653,7 +663,7 @@ inline const lambda_functor< lambda_functor_args< action<10, function_action<10> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9, const Arg10 @@ -671,7 +681,7 @@ bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9), lambda_functor< lambda_functor_args< action<10, function_action<10> >, - detail::bind_tuple_mapper< + typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9, const Arg10 @@ -681,7 +691,7 @@ bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9), >::value > > - ( detail::bind_tuple_mapper< + ( typename detail::bind_tuple_mapper< Result(&)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9), const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9, const Arg10