]> git.lyx.org Git - features.git/blobdiff - boost/boost/mpl/aux_/preprocessed/bcc_pre590/bind.hpp
boost: add eol property
[features.git] / boost / boost / mpl / aux_ / preprocessed / bcc_pre590 / bind.hpp
index e04f409601fe79562ef74897dc7e64d1f87acc8d..e769a0cb9dd30e7ebf168653d8ec0a39ec8e0e49 100644 (file)
-\r
-// Copyright Peter Dimov 2001\r
-// Copyright Aleksey Gurtovoy 2001-2004\r
-//\r
-// Distributed under the Boost Software License, Version 1.0. \r
-// (See accompanying file LICENSE_1_0.txt or copy at \r
-// http://www.boost.org/LICENSE_1_0.txt)\r
-//\r
-\r
-// *Preprocessed* version of the main "bind.hpp" header\r
-// -- DO NOT modify by hand!\r
-\r
-namespace boost { namespace mpl {\r
-\r
-namespace aux {\r
-\r
-template<\r
-      typename T, typename U1, typename U2, typename U3, typename U4\r
-    , typename U5\r
-    >\r
-struct resolve_bind_arg\r
-{\r
-    typedef T type;\r
-};\r
-\r
-template<\r
-      typename T\r
-    , typename Arg\r
-    >\r
-struct replace_unnamed_arg\r
-{\r
-    typedef Arg next;\r
-    typedef T type;\r
-};\r
-\r
-template<\r
-      typename Arg\r
-    >\r
-struct replace_unnamed_arg< arg< -1 >, Arg >\r
-{\r
-    typedef typename Arg::next next;\r
-    typedef Arg type;\r
-};\r
-\r
-template<\r
-      int N, typename U1, typename U2, typename U3, typename U4, typename U5\r
-    >\r
-struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >\r
-{\r
-    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;\r
-};\r
-\r
-} // namespace aux\r
-\r
-template<\r
-      typename F\r
-    >\r
-struct bind0\r
-{\r
-    template<\r
-          typename U1, typename U2, typename U3, typename U4, typename U5\r
-        >\r
-    struct apply\r
-    {\r
-     private:\r
-        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;\r
-        typedef typename r0::type a0;\r
-        typedef typename r0::next n1;\r
-        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;\r
-        ///\r
-     public:\r
-        typedef typename apply_wrap0<\r
-              f_\r
-            >::type type;\r
-\r
-    };\r
-};\r
-\r
-namespace aux {\r
-\r
-template<\r
-      typename F, typename U1, typename U2, typename U3, typename U4\r
-    , typename U5\r
-    >\r
-struct resolve_bind_arg<\r
-      bind0<F>, U1, U2, U3, U4, U5\r
-    >\r
-{\r
-    typedef bind0<F> f_;\r
-    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;\r
-};\r
-\r
-} // namespace aux\r
-\r
-BOOST_MPL_AUX_ARITY_SPEC(1, bind0)\r
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)\r
-\r
-template<\r
-      typename F, typename T1\r
-    >\r
-struct bind1\r
-{\r
-    template<\r
-          typename U1, typename U2, typename U3, typename U4, typename U5\r
-        >\r
-    struct apply\r
-    {\r
-     private:\r
-        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;\r
-        typedef typename r0::type a0;\r
-        typedef typename r0::next n1;\r
-        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T1,n1 > r1;\r
-        typedef typename r1::type a1;\r
-        typedef typename r1::next n2;\r
-        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;\r
-        ///\r
-     public:\r
-        typedef typename apply_wrap1<\r
-              f_\r
-            , typename t1::type\r
-            >::type type;\r
-\r
-    };\r
-};\r
-\r
-namespace aux {\r
-\r
-template<\r
-      typename F, typename T1, typename U1, typename U2, typename U3\r
-    , typename U4, typename U5\r
-    >\r
-struct resolve_bind_arg<\r
-      bind1< F,T1 >, U1, U2, U3, U4, U5\r
-    >\r
-{\r
-    typedef bind1< F,T1 > f_;\r
-    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;\r
-};\r
-\r
-} // namespace aux\r
-\r
-BOOST_MPL_AUX_ARITY_SPEC(2, bind1)\r
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)\r
-\r
-template<\r
-      typename F, typename T1, typename T2\r
-    >\r
-struct bind2\r
-{\r
-    template<\r
-          typename U1, typename U2, typename U3, typename U4, typename U5\r
-        >\r
-    struct apply\r
-    {\r
-     private:\r
-        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;\r
-        typedef typename r0::type a0;\r
-        typedef typename r0::next n1;\r
-        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T1,n1 > r1;\r
-        typedef typename r1::type a1;\r
-        typedef typename r1::next n2;\r
-        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T2,n2 > r2;\r
-        typedef typename r2::type a2;\r
-        typedef typename r2::next n3;\r
-        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;\r
-        ///\r
-     public:\r
-        typedef typename apply_wrap2<\r
-              f_\r
-            , typename t1::type, typename t2::type\r
-            >::type type;\r
-\r
-    };\r
-};\r
-\r
-namespace aux {\r
-\r
-template<\r
-      typename F, typename T1, typename T2, typename U1, typename U2\r
-    , typename U3, typename U4, typename U5\r
-    >\r
-struct resolve_bind_arg<\r
-      bind2< F,T1,T2 >, U1, U2, U3, U4, U5\r
-    >\r
-{\r
-    typedef bind2< F,T1,T2 > f_;\r
-    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;\r
-};\r
-\r
-} // namespace aux\r
-\r
-BOOST_MPL_AUX_ARITY_SPEC(3, bind2)\r
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)\r
-\r
-template<\r
-      typename F, typename T1, typename T2, typename T3\r
-    >\r
-struct bind3\r
-{\r
-    template<\r
-          typename U1, typename U2, typename U3, typename U4, typename U5\r
-        >\r
-    struct apply\r
-    {\r
-     private:\r
-        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;\r
-        typedef typename r0::type a0;\r
-        typedef typename r0::next n1;\r
-        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T1,n1 > r1;\r
-        typedef typename r1::type a1;\r
-        typedef typename r1::next n2;\r
-        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T2,n2 > r2;\r
-        typedef typename r2::type a2;\r
-        typedef typename r2::next n3;\r
-        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T3,n3 > r3;\r
-        typedef typename r3::type a3;\r
-        typedef typename r3::next n4;\r
-        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;\r
-        ///\r
-     public:\r
-        typedef typename apply_wrap3<\r
-              f_\r
-            , typename t1::type, typename t2::type, typename t3::type\r
-            >::type type;\r
-\r
-    };\r
-};\r
-\r
-namespace aux {\r
-\r
-template<\r
-      typename F, typename T1, typename T2, typename T3, typename U1\r
-    , typename U2, typename U3, typename U4, typename U5\r
-    >\r
-struct resolve_bind_arg<\r
-      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5\r
-    >\r
-{\r
-    typedef bind3< F,T1,T2,T3 > f_;\r
-    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;\r
-};\r
-\r
-} // namespace aux\r
-\r
-BOOST_MPL_AUX_ARITY_SPEC(4, bind3)\r
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)\r
-\r
-template<\r
-      typename F, typename T1, typename T2, typename T3, typename T4\r
-    >\r
-struct bind4\r
-{\r
-    template<\r
-          typename U1, typename U2, typename U3, typename U4, typename U5\r
-        >\r
-    struct apply\r
-    {\r
-     private:\r
-        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;\r
-        typedef typename r0::type a0;\r
-        typedef typename r0::next n1;\r
-        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T1,n1 > r1;\r
-        typedef typename r1::type a1;\r
-        typedef typename r1::next n2;\r
-        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T2,n2 > r2;\r
-        typedef typename r2::type a2;\r
-        typedef typename r2::next n3;\r
-        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T3,n3 > r3;\r
-        typedef typename r3::type a3;\r
-        typedef typename r3::next n4;\r
-        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T4,n4 > r4;\r
-        typedef typename r4::type a4;\r
-        typedef typename r4::next n5;\r
-        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;\r
-        ///\r
-     public:\r
-        typedef typename apply_wrap4<\r
-              f_\r
-            , typename t1::type, typename t2::type, typename t3::type\r
-            , typename t4::type\r
-            >::type type;\r
-\r
-    };\r
-};\r
-\r
-namespace aux {\r
-\r
-template<\r
-      typename F, typename T1, typename T2, typename T3, typename T4\r
-    , typename U1, typename U2, typename U3, typename U4, typename U5\r
-    >\r
-struct resolve_bind_arg<\r
-      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5\r
-    >\r
-{\r
-    typedef bind4< F,T1,T2,T3,T4 > f_;\r
-    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;\r
-};\r
-\r
-} // namespace aux\r
-\r
-BOOST_MPL_AUX_ARITY_SPEC(5, bind4)\r
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)\r
-\r
-template<\r
-      typename F, typename T1, typename T2, typename T3, typename T4\r
-    , typename T5\r
-    >\r
-struct bind5\r
-{\r
-    template<\r
-          typename U1, typename U2, typename U3, typename U4, typename U5\r
-        >\r
-    struct apply\r
-    {\r
-     private:\r
-        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;\r
-        typedef typename r0::type a0;\r
-        typedef typename r0::next n1;\r
-        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T1,n1 > r1;\r
-        typedef typename r1::type a1;\r
-        typedef typename r1::next n2;\r
-        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T2,n2 > r2;\r
-        typedef typename r2::type a2;\r
-        typedef typename r2::next n3;\r
-        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T3,n3 > r3;\r
-        typedef typename r3::type a3;\r
-        typedef typename r3::next n4;\r
-        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T4,n4 > r4;\r
-        typedef typename r4::type a4;\r
-        typedef typename r4::next n5;\r
-        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;\r
-        ///\r
-        typedef aux::replace_unnamed_arg< T5,n5 > r5;\r
-        typedef typename r5::type a5;\r
-        typedef typename r5::next n6;\r
-        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;\r
-        ///\r
-     public:\r
-        typedef typename apply_wrap5<\r
-              f_\r
-            , typename t1::type, typename t2::type, typename t3::type\r
-            , typename t4::type, typename t5::type\r
-            >::type type;\r
-\r
-    };\r
-};\r
-\r
-namespace aux {\r
-\r
-template<\r
-      typename F, typename T1, typename T2, typename T3, typename T4\r
-    , typename T5, typename U1, typename U2, typename U3, typename U4\r
-    , typename U5\r
-    >\r
-struct resolve_bind_arg<\r
-      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5\r
-    >\r
-{\r
-    typedef bind5< F,T1,T2,T3,T4,T5 > f_;\r
-    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;\r
-};\r
-\r
-} // namespace aux\r
-\r
-BOOST_MPL_AUX_ARITY_SPEC(6, bind5)\r
-BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)\r
-}}\r
-\r
+
+// Copyright Peter Dimov 2001
+// Copyright Aleksey Gurtovoy 2001-2004
+//
+// 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)
+//
+
+// *Preprocessed* version of the main "bind.hpp" header
+// -- DO NOT modify by hand!
+
+namespace boost { namespace mpl {
+
+namespace aux {
+
+template<
+      typename T, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg
+{
+    typedef T type;
+};
+
+template<
+      typename T
+    , typename Arg
+    >
+struct replace_unnamed_arg
+{
+    typedef Arg next;
+    typedef T type;
+};
+
+template<
+      typename Arg
+    >
+struct replace_unnamed_arg< arg< -1 >, Arg >
+{
+    typedef typename Arg::next next;
+    typedef Arg type;
+};
+
+template<
+      int N, typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg< arg<N>, U1, U2, U3, U4, U5 >
+{
+    typedef typename apply_wrap5<mpl::arg<N>, U1, U2, U3, U4, U5>::type type;
+};
+
+} // namespace aux
+
+template<
+      typename F
+    >
+struct bind0
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+     public:
+        typedef typename apply_wrap0<
+              f_
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind0<F>, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind0<F> f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(1, bind0)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(1, bind0)
+
+template<
+      typename F, typename T1
+    >
+struct bind1
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+     public:
+        typedef typename apply_wrap1<
+              f_
+            , typename t1::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename U1, typename U2, typename U3
+    , typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind1< F,T1 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind1< F,T1 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(2, bind1)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(2, bind1)
+
+template<
+      typename F, typename T1, typename T2
+    >
+struct bind2
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+     public:
+        typedef typename apply_wrap2<
+              f_
+            , typename t1::type, typename t2::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename U1, typename U2
+    , typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind2< F,T1,T2 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind2< F,T1,T2 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(3, bind2)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(3, bind2)
+
+template<
+      typename F, typename T1, typename T2, typename T3
+    >
+struct bind3
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+     public:
+        typedef typename apply_wrap3<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename U1
+    , typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind3< F,T1,T2,T3 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind3< F,T1,T2,T3 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(4, bind3)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(4, bind3)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    >
+struct bind4
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+     public:
+        typedef typename apply_wrap4<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename U1, typename U2, typename U3, typename U4, typename U5
+    >
+struct resolve_bind_arg<
+      bind4< F,T1,T2,T3,T4 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind4< F,T1,T2,T3,T4 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(5, bind4)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(5, bind4)
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5
+    >
+struct bind5
+{
+    template<
+          typename U1, typename U2, typename U3, typename U4, typename U5
+        >
+    struct apply
+    {
+     private:
+        typedef aux::replace_unnamed_arg< F, mpl::arg<1> > r0;
+        typedef typename r0::type a0;
+        typedef typename r0::next n1;
+        typedef typename aux::resolve_bind_arg< a0,U1,U2,U3,U4,U5 >::type f_;
+        ///
+        typedef aux::replace_unnamed_arg< T1,n1 > r1;
+        typedef typename r1::type a1;
+        typedef typename r1::next n2;
+        typedef aux::resolve_bind_arg< a1,U1,U2,U3,U4,U5 > t1;
+        ///
+        typedef aux::replace_unnamed_arg< T2,n2 > r2;
+        typedef typename r2::type a2;
+        typedef typename r2::next n3;
+        typedef aux::resolve_bind_arg< a2,U1,U2,U3,U4,U5 > t2;
+        ///
+        typedef aux::replace_unnamed_arg< T3,n3 > r3;
+        typedef typename r3::type a3;
+        typedef typename r3::next n4;
+        typedef aux::resolve_bind_arg< a3,U1,U2,U3,U4,U5 > t3;
+        ///
+        typedef aux::replace_unnamed_arg< T4,n4 > r4;
+        typedef typename r4::type a4;
+        typedef typename r4::next n5;
+        typedef aux::resolve_bind_arg< a4,U1,U2,U3,U4,U5 > t4;
+        ///
+        typedef aux::replace_unnamed_arg< T5,n5 > r5;
+        typedef typename r5::type a5;
+        typedef typename r5::next n6;
+        typedef aux::resolve_bind_arg< a5,U1,U2,U3,U4,U5 > t5;
+        ///
+     public:
+        typedef typename apply_wrap5<
+              f_
+            , typename t1::type, typename t2::type, typename t3::type
+            , typename t4::type, typename t5::type
+            >::type type;
+
+    };
+};
+
+namespace aux {
+
+template<
+      typename F, typename T1, typename T2, typename T3, typename T4
+    , typename T5, typename U1, typename U2, typename U3, typename U4
+    , typename U5
+    >
+struct resolve_bind_arg<
+      bind5< F,T1,T2,T3,T4,T5 >, U1, U2, U3, U4, U5
+    >
+{
+    typedef bind5< F,T1,T2,T3,T4,T5 > f_;
+    typedef typename apply_wrap5< f_,U1,U2,U3,U4,U5 >::type type;
+};
+
+} // namespace aux
+
+BOOST_MPL_AUX_ARITY_SPEC(6, bind5)
+BOOST_MPL_AUX_TEMPLATE_ARITY_SPEC(6, bind5)
+}}
+