diff options
author | Remko Tronçon <git@el-tramo.be> | 2012-12-23 13:16:26 (GMT) |
---|---|---|
committer | Remko Tronçon <git@el-tramo.be> | 2012-12-23 14:43:26 (GMT) |
commit | 491ddd570a752cf9bda85933bed0c6942e39b1f9 (patch) | |
tree | 10c25c1be8cc08d0497df1dccd56a10fbb30beee /3rdParty/Boost/src/boost/lambda/detail/bind_functions.hpp | |
parent | da7d7a0ca71b80281aa9ff2526290b61ccb0cc60 (diff) | |
download | swift-491ddd570a752cf9bda85933bed0c6942e39b1f9.zip swift-491ddd570a752cf9bda85933bed0c6942e39b1f9.tar.bz2 |
Update Boost to 1.52.0.
Change-Id: I1e56bea2600bf2ed9c5b3aba8c4f9d2a0f350e77
Diffstat (limited to '3rdParty/Boost/src/boost/lambda/detail/bind_functions.hpp')
-rw-r--r-- | 3rdParty/Boost/src/boost/lambda/detail/bind_functions.hpp | 1879 |
1 files changed, 1879 insertions, 0 deletions
diff --git a/3rdParty/Boost/src/boost/lambda/detail/bind_functions.hpp b/3rdParty/Boost/src/boost/lambda/detail/bind_functions.hpp new file mode 100644 index 0000000..f85513c --- /dev/null +++ b/3rdParty/Boost/src/boost/lambda/detail/bind_functions.hpp @@ -0,0 +1,1879 @@ +// -- bind_functions.hpp -- Boost Lambda Library +// +// Copyright (C) 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi) +// +// Distributed under the Boost Software License, Version 1.0. (See +// accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) +// +// For more information, see http://www.boost.org + +// ---------------------------------------------------------------- + +#ifndef BOOST_LAMBDA_BIND_FUNCTIONS_HPP +#define BOOST_LAMBDA_BIND_FUNCTIONS_HPP + + +namespace boost { +namespace lambda { + +#ifdef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING + + // gcc 2.96 instantiates bind functions it does not even call. + // These instantiations lead to incorrect types in the return type, + // and a compilation error results. + // This tweaking is to prevent the formation of the erroneous type. +namespace detail { + +template<class T> struct constify_non_funcs { + typedef typename + detail::IF_type<boost::is_function<T>::value, + boost::add_reference<T>, + boost::add_const<T> + >::type type; +}; + +} +#endif +// 1-argument bind functions -------------------------- +#ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T +template <class Result> +inline const +lambda_functor< + lambda_functor_base< + action<1, function_action<1, Result> >, + typename detail::bind_tuple_mapper<Result(&)()>::type + > +> + +bind(Result(& a1)()) { + return + lambda_functor_base< + action<1, function_action<1, Result> >, + typename detail::bind_tuple_mapper<Result(&)()>::type + > + ( typename detail::bind_tuple_mapper<Result(&)()>::type + (a1) + ); +} +#endif + + #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING +template <class Arg1> +inline const +lambda_functor< + lambda_functor_base< + action<1, function_action<1> >, + typename detail::bind_tuple_mapper<const Arg1>::type + > +> + +bind(const Arg1& a1) { + return + lambda_functor_base< + action<1, function_action<1> >, + typename detail::bind_tuple_mapper<const Arg1>::type + > + ( typename detail::bind_tuple_mapper<const Arg1>::type + (a1) + ); +} + +template <class Result, class Arg1> +inline const +lambda_functor< + lambda_functor_base< + action<1, function_action<1, Result> >, + typename detail::bind_tuple_mapper<const Arg1>::type + > +> + +bind(const Arg1& a1) { + return + lambda_functor_base< + action<1, function_action<1, Result> >, + typename detail::bind_tuple_mapper<const Arg1>::type + > + ( typename detail::bind_tuple_mapper<const Arg1>::type + (a1) + ); +} + + + #else +template <class Arg1> +inline const +lambda_functor< + lambda_functor_base< + action<1, function_action<1> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type + >::type + > +> + +bind(const Arg1& a1) { + return + lambda_functor_base< + action<1, function_action<1> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type + >::type + (a1) + ); +} + +template <class Result, class Arg1> +inline const +lambda_functor< + lambda_functor_base< + action<1, function_action<1, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type + >::type + > +> + +bind(const Arg1& a1) { + return + lambda_functor_base< + action<1, function_action<1, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type + >::type + (a1) + ); +} + +template <class Result> +inline const +lambda_functor< + lambda_functor_base< + action<1, function_action<1, Result> >, + typename detail::bind_tuple_mapper<Result(*)()>::type + > +> + +bind(Result(* const & a1)()) { + return + lambda_functor_base< + action<1, function_action<1, Result> >, + typename detail::bind_tuple_mapper<Result(*)()>::type + > + ( typename detail::bind_tuple_mapper<Result(*)()>::type + (a1) + ); +} + + +#endif + +// 2-argument bind functions -------------------------- +#ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T +template <class Result, class Par1, class Arg2> +inline const +lambda_functor< + lambda_functor_base< + action<2, function_action<2, Result> >, + typename detail::bind_tuple_mapper<Result(&)(Par1), const Arg2>::type + > +> + +bind(Result(&a1)(Par1), const Arg2& a2) { + return + lambda_functor_base< + action<2, function_action<2, Result> >, + typename detail::bind_tuple_mapper<Result(&)(Par1), const Arg2>::type + > + ( typename detail::bind_tuple_mapper<Result(&)(Par1), const Arg2>::type + (a1, a2) + ); +} +#endif + +#ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING +template <class Arg1, class Arg2> +inline const +lambda_functor< + lambda_functor_base< + action<2, function_action<2> >, + typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type + > +> + +bind(const Arg1& a1, const Arg2& a2) { + return + lambda_functor_base< + action<2, function_action<2> >, + typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type + > + ( typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type + (a1, a2) + ); +} + +template <class Result, class Arg1, class Arg2> +inline const +lambda_functor< + lambda_functor_base< + action<2, function_action<2, Result> >, + typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type + > +> + +bind(const Arg1& a1, const Arg2& a2) { + return + lambda_functor_base< + action<2, function_action<2, Result> >, + typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type + > + ( typename detail::bind_tuple_mapper<const Arg1, const Arg2>::type + (a1, a2) + ); +} + + + #else +template <class Arg1, class Arg2> +inline const +lambda_functor< + lambda_functor_base< + action<2, function_action<2> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2) { + return + lambda_functor_base< + action<2, function_action<2> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2 + >::type + (a1, a2) + ); +} + +template <class Result, class Arg1, class Arg2> +inline const +lambda_functor< + lambda_functor_base< + action<2, function_action<2, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2) { + return + lambda_functor_base< + action<2, function_action<2, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2 + >::type + (a1, a2) + ); +} + +template <class Result, class Par1, class Arg2> +inline const +lambda_functor< + lambda_functor_base< + action<2, function_action<2, Result> >, + typename detail::bind_tuple_mapper<Result(*)(Par1), const Arg2>::type + > +> + +bind(Result(* const & a1)(Par1), const Arg2& a2) { + return + lambda_functor_base< + action<2, function_action<2, Result> >, + typename detail::bind_tuple_mapper<Result(*)(Par1), const Arg2>::type + > + ( typename detail::bind_tuple_mapper<Result(*)(Par1), const Arg2>::type + (a1, a2) + ); +} + + + #endif + +// 3-argument bind functions -------------------------- +#ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T +template <class Result, class Par1, class Par2, class Arg2, class Arg3> +inline const +lambda_functor< + lambda_functor_base< + action<3, function_action<3, Result> >, + typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2), const Arg2, const Arg3 + >::type + > +> + +bind(Result(&a1)(Par1, Par2), const Arg2& a2, const Arg3& a3) { + return + lambda_functor_base< + action<3, function_action<3, Result> >, + typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2), const Arg2, const Arg3 + >::type + > + ( typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2), const Arg2, const Arg3 + >::type + (a1, a2, a3) + ); +} +#endif + + #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING +template <class Arg1, class Arg2, class Arg3> +inline const +lambda_functor< + lambda_functor_base< + action<3, function_action<3> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) { + return + lambda_functor_base< + action<3, function_action<3> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3 + >::type + (a1, a2, a3) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3> +inline const +lambda_functor< + lambda_functor_base< + action<3, function_action<3, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) { + return + lambda_functor_base< + action<3, function_action<3, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3 + >::type + (a1, a2, a3) + ); +} + + + #else +template <class Arg1, class Arg2, class Arg3> +inline const +lambda_functor< + lambda_functor_base< + action<3, function_action<3> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) { + return + lambda_functor_base< + action<3, function_action<3> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3 + >::type + (a1, a2, a3) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3> +inline const +lambda_functor< + lambda_functor_base< + action<3, function_action<3, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3) { + return + lambda_functor_base< + action<3, function_action<3, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3 + >::type + (a1, a2, a3) + ); +} + +template <class Result, class Par1, class Par2, class Arg2, class Arg3> +inline const +lambda_functor< + lambda_functor_base< + action<3, function_action<3, Result> >, + typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2), const Arg2, const Arg3 + >::type + > +> + +bind(Result(* const & a1)(Par1, Par2), const Arg2& a2, const Arg3& a3) { + return + lambda_functor_base< + action<3, function_action<3, Result> >, + typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2), const Arg2, const Arg3 + >::type + > + ( typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2), const Arg2, const Arg3 + >::type + (a1, a2, a3) + ); +} + + + #endif + +// 4-argument bind functions -------------------------- +#ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T +template <class Result, class Par1, class Par2, class Par3, class Arg2, + class Arg3, class Arg4> +inline const +lambda_functor< + lambda_functor_base< + action<4, function_action<4, Result> >, + typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4 + >::type + > +> + +bind(Result(&a1)(Par1, Par2, Par3), const Arg2& a2, const Arg3& a3, + const Arg4& a4) { + return + lambda_functor_base< + action<4, function_action<4, Result> >, + typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4 + >::type + > + ( typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4 + >::type + (a1, a2, a3, a4) + ); +} +#endif + + #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING +template <class Arg1, class Arg2, class Arg3, class Arg4> +inline const +lambda_functor< + lambda_functor_base< + action<4, function_action<4> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) { + return + lambda_functor_base< + action<4, function_action<4> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4 + >::type + (a1, a2, a3, a4) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4> +inline const +lambda_functor< + lambda_functor_base< + action<4, function_action<4, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) { + return + lambda_functor_base< + action<4, function_action<4, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4 + >::type + (a1, a2, a3, a4) + ); +} + + + #else +template <class Arg1, class Arg2, class Arg3, class Arg4> +inline const +lambda_functor< + lambda_functor_base< + action<4, function_action<4> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) { + return + lambda_functor_base< + action<4, function_action<4> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4 + >::type + (a1, a2, a3, a4) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4> +inline const +lambda_functor< + lambda_functor_base< + action<4, function_action<4, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4) { + return + lambda_functor_base< + action<4, function_action<4, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4 + >::type + (a1, a2, a3, a4) + ); +} + +template <class Result, class Par1, class Par2, class Par3, class Arg2, + class Arg3, class Arg4> +inline const +lambda_functor< + lambda_functor_base< + action<4, function_action<4, Result> >, + typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4 + >::type + > +> + +bind(Result(* const & a1)(Par1, Par2, Par3), const Arg2& a2, + const Arg3& a3, const Arg4& a4) { + return + lambda_functor_base< + action<4, function_action<4, Result> >, + typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4 + >::type + > + ( typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2, Par3), const Arg2, const Arg3, const Arg4 + >::type + (a1, a2, a3, a4) + ); +} + + + #endif + +// 5-argument bind functions -------------------------- +#ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Arg2, class Arg3, class Arg4, class Arg5> +inline const +lambda_functor< + lambda_functor_base< + action<5, function_action<5, Result> >, + typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4, + const Arg5 + >::type + > +> + +bind(Result(&a1)(Par1, Par2, Par3, Par4), const Arg2& a2, const Arg3& a3, + const Arg4& a4, const Arg5& a5) { + return + lambda_functor_base< + action<5, function_action<5, Result> >, + typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4, + const Arg5 + >::type + > + ( typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4, + const Arg5 + >::type + (a1, a2, a3, a4, a5) + ); +} +#endif + + #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5> +inline const +lambda_functor< + lambda_functor_base< + action<5, function_action<5> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5) { + return + lambda_functor_base< + action<5, function_action<5> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5 + >::type + (a1, a2, a3, a4, a5) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5> +inline const +lambda_functor< + lambda_functor_base< + action<5, function_action<5, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5) { + return + lambda_functor_base< + action<5, function_action<5, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5 + >::type + (a1, a2, a3, a4, a5) + ); +} + + + #else +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5> +inline const +lambda_functor< + lambda_functor_base< + action<5, function_action<5> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5) { + return + lambda_functor_base< + action<5, function_action<5> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5 + >::type + (a1, a2, a3, a4, a5) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5> +inline const +lambda_functor< + lambda_functor_base< + action<5, function_action<5, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5) { + return + lambda_functor_base< + action<5, function_action<5, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5 + >::type + (a1, a2, a3, a4, a5) + ); +} + +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Arg2, class Arg3, class Arg4, class Arg5> +inline const +lambda_functor< + lambda_functor_base< + action<5, function_action<5, Result> >, + typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4, + const Arg5 + >::type + > +> + +bind(Result(* const & a1)(Par1, Par2, Par3, Par4), const Arg2& a2, + const Arg3& a3, const Arg4& a4, const Arg5& a5) { + return + lambda_functor_base< + action<5, function_action<5, Result> >, + typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4, + const Arg5 + >::type + > + ( typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2, Par3, Par4), const Arg2, const Arg3, const Arg4, + const Arg5 + >::type + (a1, a2, a3, a4, a5) + ); +} + + + #endif + +// 6-argument bind functions -------------------------- +#ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Par5, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6> +inline const +lambda_functor< + lambda_functor_base< + action<6, function_action<6, Result> >, + typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6 + >::type + > +> + +bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5), const Arg2& a2, + const Arg3& a3, const Arg4& a4, const Arg5& a5, const Arg6& a6) { + return + lambda_functor_base< + action<6, function_action<6, Result> >, + typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6 + >::type + > + ( typename detail::bind_tuple_mapper< + Result(&)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6 + >::type + (a1, a2, a3, a4, a5, a6) + ); +} +#endif + + #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6> +inline const +lambda_functor< + lambda_functor_base< + action<6, function_action<6> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6) { + return + lambda_functor_base< + action<6, function_action<6> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 + >::type + (a1, a2, a3, a4, a5, a6) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6> +inline const +lambda_functor< + lambda_functor_base< + action<6, function_action<6, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6) { + return + lambda_functor_base< + action<6, function_action<6, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6 + >::type + (a1, a2, a3, a4, a5, a6) + ); +} + + + #else +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6> +inline const +lambda_functor< + lambda_functor_base< + action<6, function_action<6> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6) { + return + lambda_functor_base< + action<6, function_action<6> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6 + >::type + (a1, a2, a3, a4, a5, a6) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6> +inline const +lambda_functor< + lambda_functor_base< + action<6, function_action<6, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6) { + return + lambda_functor_base< + action<6, function_action<6, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6 + >::type + (a1, a2, a3, a4, a5, a6) + ); +} + +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Par5, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6> +inline const +lambda_functor< + lambda_functor_base< + action<6, function_action<6, Result> >, + typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6 + >::type + > +> + +bind(Result(* const & a1)(Par1, Par2, Par3, Par4, Par5), const Arg2& a2, + const Arg3& a3, const Arg4& a4, const Arg5& a5, const Arg6& a6) { + return + lambda_functor_base< + action<6, function_action<6, Result> >, + typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6 + >::type + > + ( typename detail::bind_tuple_mapper< + Result(*)(Par1, Par2, Par3, Par4, Par5), const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6 + >::type + (a1, a2, a3, a4, a5, a6) + ); +} + + + #endif + +// 7-argument bind functions -------------------------- +#ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Par5, class Par6, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6, class Arg7> +inline const +lambda_functor< + lambda_functor_base< + action<7, function_action<7, Result> >, + 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 + > +> + +bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6), const Arg2& a2, + const Arg3& a3, const Arg4& a4, const Arg5& a5, const Arg6& a6, + const Arg7& a7) { + return + lambda_functor_base< + action<7, function_action<7, Result> >, + 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 + > + ( 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 + (a1, a2, a3, a4, a5, a6, a7) + ); +} +#endif + + #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6, class Arg7> +inline const +lambda_functor< + lambda_functor_base< + action<7, function_action<7> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, + const Arg7 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7) { + return + lambda_functor_base< + action<7, function_action<7> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7 + >::type + (a1, a2, a3, a4, a5, a6, a7) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6, class Arg7> +inline const +lambda_functor< + lambda_functor_base< + action<7, function_action<7, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, + const Arg7 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7) { + return + lambda_functor_base< + action<7, function_action<7, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7 + >::type + (a1, a2, a3, a4, a5, a6, a7) + ); +} + + + #else +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6, class Arg7> +inline const +lambda_functor< + lambda_functor_base< + action<7, function_action<7> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6, const Arg7 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7) { + return + lambda_functor_base< + action<7, function_action<7> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7 + >::type + (a1, a2, a3, a4, a5, a6, a7) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6, class Arg7> +inline const +lambda_functor< + lambda_functor_base< + action<7, function_action<7, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6, const Arg7 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7) { + return + lambda_functor_base< + action<7, function_action<7, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7 + >::type + (a1, a2, a3, a4, a5, a6, a7) + ); +} + +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Par5, class Par6, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6, class Arg7> +inline const +lambda_functor< + lambda_functor_base< + action<7, function_action<7, Result> >, + 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 + > +> + +bind(Result(* const & a1)(Par1, Par2, Par3, Par4, Par5, Par6), + const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5, + const Arg6& a6, const Arg7& a7) { + return + lambda_functor_base< + action<7, function_action<7, Result> >, + 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 + > + ( 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 + (a1, a2, a3, a4, a5, a6, a7) + ); +} + + + #endif + +// 8-argument bind functions -------------------------- +#ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Par5, class Par6, class Par7, class Arg2, class Arg3, + class Arg4, class Arg5, class Arg6, class Arg7, class Arg8> +inline const +lambda_functor< + lambda_functor_base< + action<8, function_action<8, Result> >, + 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 + > +> + +bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), const Arg2& a2, + const Arg3& a3, const Arg4& a4, const Arg5& a5, const Arg6& a6, + const Arg7& a7, const Arg8& a8) { + return + lambda_functor_base< + action<8, function_action<8, Result> >, + 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 + > + ( 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 + (a1, a2, a3, a4, a5, a6, a7, a8) + ); +} +#endif + + #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6, class Arg7, class Arg8> +inline const +lambda_functor< + lambda_functor_base< + action<8, function_action<8> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, + const Arg7, const Arg8 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8) { + return + lambda_functor_base< + action<8, function_action<8> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7, const Arg8 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7, const Arg8 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6, class Arg7, class Arg8> +inline const +lambda_functor< + lambda_functor_base< + action<8, function_action<8, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, + const Arg7, const Arg8 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8) { + return + lambda_functor_base< + action<8, function_action<8, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7, const Arg8 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7, const Arg8 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8) + ); +} + + + #else +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6, class Arg7, class Arg8> +inline const +lambda_functor< + lambda_functor_base< + action<8, function_action<8> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8) { + return + lambda_functor_base< + action<8, function_action<8> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6, class Arg7, class Arg8> +inline const +lambda_functor< + lambda_functor_base< + action<8, function_action<8, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8) { + return + lambda_functor_base< + action<8, function_action<8, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, const Arg8 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8) + ); +} + +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Par5, class Par6, class Par7, class Arg2, class Arg3, + class Arg4, class Arg5, class Arg6, class Arg7, class Arg8> +inline const +lambda_functor< + lambda_functor_base< + action<8, function_action<8, Result> >, + 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 + > +> + +bind(Result(* const & a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7), + const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5, + const Arg6& a6, const Arg7& a7, const Arg8& a8) { + return + lambda_functor_base< + action<8, function_action<8, Result> >, + 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 + > + ( 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 + (a1, a2, a3, a4, a5, a6, a7, a8) + ); +} + + + #endif + +// 9-argument bind functions -------------------------- +#ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Par5, class Par6, class Par7, class Par8, class Arg2, + class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, + class Arg8, class Arg9> +inline const +lambda_functor< + lambda_functor_base< + action<9, function_action<9, Result> >, + 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 + >::type + > +> + +bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), + const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5, + const Arg6& a6, const Arg7& a7, const Arg8& a8, const Arg9& a9) { + return + lambda_functor_base< + action<9, function_action<9, Result> >, + 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 + >::type + > + ( 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 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8, a9) + ); +} +#endif + + #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6, class Arg7, class Arg8, class Arg9> +inline const +lambda_functor< + lambda_functor_base< + action<9, function_action<9> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, + const Arg7, const Arg8, const Arg9 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8, + const Arg9& a9) { + return + lambda_functor_base< + action<9, function_action<9> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7, const Arg8, const Arg9 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7, const Arg8, const Arg9 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8, a9) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6, class Arg7, class Arg8, class Arg9> +inline const +lambda_functor< + lambda_functor_base< + action<9, function_action<9, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, const Arg6, + const Arg7, const Arg8, const Arg9 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8, + const Arg9& a9) { + return + lambda_functor_base< + action<9, function_action<9, Result> >, + typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7, const Arg8, const Arg9 + >::type + > + ( typename detail::bind_tuple_mapper< + const Arg1, const Arg2, const Arg3, const Arg4, const Arg5, + const Arg6, const Arg7, const Arg8, const Arg9 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8, a9) + ); +} + + + #else +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6, class Arg7, class Arg8, class Arg9> +inline const +lambda_functor< + lambda_functor_base< + action<9, function_action<9> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8, + const Arg9& a9) { + return + lambda_functor_base< + action<9, function_action<9> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, + const Arg8, const Arg9 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, + const Arg8, const Arg9 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8, a9) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6, class Arg7, class Arg8, class Arg9> +inline const +lambda_functor< + lambda_functor_base< + action<9, function_action<9, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8, + const Arg9& a9) { + return + lambda_functor_base< + action<9, function_action<9, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, + const Arg8, const Arg9 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, + const Arg8, const Arg9 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8, a9) + ); +} + +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Par5, class Par6, class Par7, class Par8, class Arg2, + class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, + class Arg8, class Arg9> +inline const +lambda_functor< + lambda_functor_base< + action<9, function_action<9, Result> >, + 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 + >::type + > +> + +bind(Result(* const & a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8), + const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5, + const Arg6& a6, const Arg7& a7, const Arg8& a8, const Arg9& a9) { + return + lambda_functor_base< + action<9, function_action<9, Result> >, + 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 + >::type + > + ( 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 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8, a9) + ); +} + + + #endif + +// 10-argument bind functions -------------------------- +#ifndef BOOST_REF_TO_FUNC_CONFLICTS_WITH_REF_TO_T +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Par5, class Par6, class Par7, class Par8, class Par9, + class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, + class Arg7, class Arg8, class Arg9, class Arg10> +inline const +lambda_functor< + lambda_functor_base< + action<10, function_action<10, Result> >, + 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 + >::type + > +> + +bind(Result(&a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, Par9), + const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5, + const Arg6& a6, const Arg7& a7, const Arg8& a8, const Arg9& a9, + const Arg10& a10) { + return + lambda_functor_base< + action<10, function_action<10, Result> >, + 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 + >::type + > + ( 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 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + ); +} +#endif + + #ifndef BOOST_LAMBDA_INCORRECT_BIND_OVERLOADING +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6, class Arg7, class Arg8, class Arg9, class Arg10> +inline const +lambda_functor< + lambda_functor_base< + action<10, function_action<10> >, + 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 + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8, + const Arg9& a9, const Arg10& a10) { + return + lambda_functor_base< + action<10, function_action<10> >, + 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 + > + ( 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 + (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6, class Arg7, class Arg8, class Arg9, + class Arg10> +inline const +lambda_functor< + lambda_functor_base< + action<10, function_action<10, Result> >, + 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 + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8, + const Arg9& a9, const Arg10& a10) { + return + lambda_functor_base< + action<10, function_action<10, Result> >, + 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 + > + ( 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 + (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + ); +} + + + #else +template <class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, + class Arg6, class Arg7, class Arg8, class Arg9, class Arg10> +inline const +lambda_functor< + lambda_functor_base< + action<10, function_action<10> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9, + const Arg10 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8, + const Arg9& a9, const Arg10& a10) { + return + lambda_functor_base< + action<10, function_action<10> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, + const Arg8, const Arg9, const Arg10 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, + const Arg8, const Arg9, const Arg10 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + ); +} + +template <class Result, class Arg1, class Arg2, class Arg3, class Arg4, + class Arg5, class Arg6, class Arg7, class Arg8, class Arg9, + class Arg10> +inline const +lambda_functor< + lambda_functor_base< + action<10, function_action<10, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, const Arg3, + const Arg4, const Arg5, const Arg6, const Arg7, const Arg8, const Arg9, + const Arg10 + >::type + > +> + +bind(const Arg1& a1, const Arg2& a2, const Arg3& a3, const Arg4& a4, + const Arg5& a5, const Arg6& a6, const Arg7& a7, const Arg8& a8, + const Arg9& a9, const Arg10& a10) { + return + lambda_functor_base< + action<10, function_action<10, Result> >, + typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, + const Arg8, const Arg9, const Arg10 + >::type + > + ( typename detail::bind_tuple_mapper< + typename detail::constify_non_funcs<Arg1>::type, const Arg2, + const Arg3, const Arg4, const Arg5, const Arg6, const Arg7, + const Arg8, const Arg9, const Arg10 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + ); +} + +template <class Result, class Par1, class Par2, class Par3, class Par4, + class Par5, class Par6, class Par7, class Par8, class Par9, + class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, + class Arg7, class Arg8, class Arg9, class Arg10> +inline const +lambda_functor< + lambda_functor_base< + action<10, function_action<10, Result> >, + 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 + >::type + > +> + +bind(Result(* const & a1)(Par1, Par2, Par3, Par4, Par5, Par6, Par7, Par8, + Par9), const Arg2& a2, const Arg3& a3, const Arg4& a4, const Arg5& a5, + const Arg6& a6, const Arg7& a7, const Arg8& a8, const Arg9& a9, + const Arg10& a10) { + return + lambda_functor_base< + action<10, function_action<10, Result> >, + 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 + >::type + > + ( 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 + >::type + (a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) + ); +} + + + #endif + +} // namespace lambda +} // namespace boost + +#endif |