Include bind in ndnboost.
diff --git a/ndnboost/lambda/detail/bind_functions.hpp b/ndnboost/lambda/detail/bind_functions.hpp
new file mode 100644
index 0000000..4288067
--- /dev/null
+++ b/ndnboost/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 ndnboost { 
+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<ndnboost::is_function<T>::value,
+    ndnboost::add_reference<T>,
+    ndnboost::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 ndnboost
+
+#endif