Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r79934 - in branches/release: . boost boost/proto/context boost/proto/context/detail boost/proto/context/detail/preprocessed boost/proto/transform boost/proto/transform/detail boost/proto/transform/detail/preprocessed
From: eric_at_[hidden]
Date: 2012-08-08 15:14:04


Author: eric_niebler
Date: 2012-08-08 15:14:03 EDT (Wed, 08 Aug 2012)
New Revision: 79934
URL: http://svn.boost.org/trac/boost/changeset/79934

Log:
merge [79918] from trunk, fixes #7203
Properties modified:
   branches/release/ (props changed)
   branches/release/boost/ (props changed)
Text files modified:
   branches/release/boost/proto/context/default.hpp | 4
   branches/release/boost/proto/context/detail/default_eval.hpp | 2
   branches/release/boost/proto/context/detail/preprocessed/default_eval.hpp | 16
   branches/release/boost/proto/transform/default.hpp | 4
   branches/release/boost/proto/transform/detail/default_function_impl.hpp | 2
   branches/release/boost/proto/transform/detail/pack_impl.hpp | 10
   branches/release/boost/proto/transform/detail/preprocessed/default_function_impl.hpp | 16
   branches/release/boost/proto/transform/detail/preprocessed/pack_impl.hpp | 350 ++++++++++++++++++++--------------------
   8 files changed, 202 insertions(+), 202 deletions(-)

Modified: branches/release/boost/proto/context/default.hpp
==============================================================================
--- branches/release/boost/proto/context/default.hpp (original)
+++ branches/release/boost/proto/context/default.hpp 2012-08-08 15:14:03 EDT (Wed, 08 Aug 2012)
@@ -366,7 +366,7 @@
                 BOOST_PROTO_USE_GET_POINTER();
                 typedef typename detail::classtypeof<function_type>::type class_type;
                 return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (BOOST_PROTO_DEFAULT_EVAL(~, 1, expr))) ->*
                     BOOST_PROTO_DEFAULT_EVAL(~, 0, expr)
                 )();
             }
@@ -376,7 +376,7 @@
                 BOOST_PROTO_USE_GET_POINTER();
                 typedef typename detail::classtypeof<function_type>::type class_type;
                 return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (BOOST_PROTO_DEFAULT_EVAL(~, 1, expr))) ->*
                     BOOST_PROTO_DEFAULT_EVAL(~, 0, expr)
                 );
             }

Modified: branches/release/boost/proto/context/detail/default_eval.hpp
==============================================================================
--- branches/release/boost/proto/context/detail/default_eval.hpp (original)
+++ branches/release/boost/proto/context/detail/default_eval.hpp 2012-08-08 15:14:03 EDT (Wed, 08 Aug 2012)
@@ -71,7 +71,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (BOOST_PROTO_DEFAULT_EVAL(~, 1, expr))) ->*
                 BOOST_PROTO_DEFAULT_EVAL(~, 0, expr)
             )(BOOST_PP_ENUM(BOOST_PP_SUB(N, 2), BOOST_PROTO_DEFAULT_EVAL_SHIFTED, expr));
         }

Modified: branches/release/boost/proto/context/detail/preprocessed/default_eval.hpp
==============================================================================
--- branches/release/boost/proto/context/detail/preprocessed/default_eval.hpp (original)
+++ branches/release/boost/proto/context/detail/preprocessed/default_eval.hpp 2012-08-08 15:14:03 EDT (Wed, 08 Aug 2012)
@@ -34,7 +34,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (proto::eval(proto::child_c< 1>( expr), context))) ->*
                 proto::eval(proto::child_c< 0>( expr), context)
             )(proto::eval(proto::child_c< 2>( expr), context));
         }
@@ -68,7 +68,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (proto::eval(proto::child_c< 1>( expr), context))) ->*
                 proto::eval(proto::child_c< 0>( expr), context)
             )(proto::eval(proto::child_c< 2>( expr), context) , proto::eval(proto::child_c< 3>( expr), context));
         }
@@ -102,7 +102,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (proto::eval(proto::child_c< 1>( expr), context))) ->*
                 proto::eval(proto::child_c< 0>( expr), context)
             )(proto::eval(proto::child_c< 2>( expr), context) , proto::eval(proto::child_c< 3>( expr), context) , proto::eval(proto::child_c< 4>( expr), context));
         }
@@ -136,7 +136,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (proto::eval(proto::child_c< 1>( expr), context))) ->*
                 proto::eval(proto::child_c< 0>( expr), context)
             )(proto::eval(proto::child_c< 2>( expr), context) , proto::eval(proto::child_c< 3>( expr), context) , proto::eval(proto::child_c< 4>( expr), context) , proto::eval(proto::child_c< 5>( expr), context));
         }
@@ -170,7 +170,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (proto::eval(proto::child_c< 1>( expr), context))) ->*
                 proto::eval(proto::child_c< 0>( expr), context)
             )(proto::eval(proto::child_c< 2>( expr), context) , proto::eval(proto::child_c< 3>( expr), context) , proto::eval(proto::child_c< 4>( expr), context) , proto::eval(proto::child_c< 5>( expr), context) , proto::eval(proto::child_c< 6>( expr), context));
         }
@@ -204,7 +204,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (proto::eval(proto::child_c< 1>( expr), context))) ->*
                 proto::eval(proto::child_c< 0>( expr), context)
             )(proto::eval(proto::child_c< 2>( expr), context) , proto::eval(proto::child_c< 3>( expr), context) , proto::eval(proto::child_c< 4>( expr), context) , proto::eval(proto::child_c< 5>( expr), context) , proto::eval(proto::child_c< 6>( expr), context) , proto::eval(proto::child_c< 7>( expr), context));
         }
@@ -238,7 +238,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (proto::eval(proto::child_c< 1>( expr), context))) ->*
                 proto::eval(proto::child_c< 0>( expr), context)
             )(proto::eval(proto::child_c< 2>( expr), context) , proto::eval(proto::child_c< 3>( expr), context) , proto::eval(proto::child_c< 4>( expr), context) , proto::eval(proto::child_c< 5>( expr), context) , proto::eval(proto::child_c< 6>( expr), context) , proto::eval(proto::child_c< 7>( expr), context) , proto::eval(proto::child_c< 8>( expr), context));
         }
@@ -272,7 +272,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, expr)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (proto::eval(proto::child_c< 1>( expr), context))) ->*
                 proto::eval(proto::child_c< 0>( expr), context)
             )(proto::eval(proto::child_c< 2>( expr), context) , proto::eval(proto::child_c< 3>( expr), context) , proto::eval(proto::child_c< 4>( expr), context) , proto::eval(proto::child_c< 5>( expr), context) , proto::eval(proto::child_c< 6>( expr), context) , proto::eval(proto::child_c< 7>( expr), context) , proto::eval(proto::child_c< 8>( expr), context) , proto::eval(proto::child_c< 9>( expr), context));
         }

Modified: branches/release/boost/proto/transform/default.hpp
==============================================================================
--- branches/release/boost/proto/transform/default.hpp (original)
+++ branches/release/boost/proto/transform/default.hpp 2012-08-08 15:14:03 EDT (Wed, 08 Aug 2012)
@@ -545,7 +545,7 @@
                 BOOST_PROTO_USE_GET_POINTER();
                 typedef typename detail::classtypeof<function_type>::type class_type;
                 return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (BOOST_PROTO_DEFAULT_EVAL(~, 1, e))) ->*
                     BOOST_PROTO_DEFAULT_EVAL(~, 0, e)
                 )();
             }
@@ -561,7 +561,7 @@
                 BOOST_PROTO_USE_GET_POINTER();
                 typedef typename detail::classtypeof<function_type>::type class_type;
                 return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (BOOST_PROTO_DEFAULT_EVAL(~, 1, e))) ->*
                     BOOST_PROTO_DEFAULT_EVAL(~, 0, e)
                 );
             }

Modified: branches/release/boost/proto/transform/detail/default_function_impl.hpp
==============================================================================
--- branches/release/boost/proto/transform/detail/default_function_impl.hpp (original)
+++ branches/release/boost/proto/transform/detail/default_function_impl.hpp 2012-08-08 15:14:03 EDT (Wed, 08 Aug 2012)
@@ -86,7 +86,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (BOOST_PROTO_DEFAULT_EVAL(~, 1, e))) ->*
                 BOOST_PROTO_DEFAULT_EVAL(~, 0, e)
             )(BOOST_PP_ENUM(BOOST_PP_SUB(N, 2), BOOST_PROTO_DEF_FUN_INVOKE_ARG, e));
         }

Modified: branches/release/boost/proto/transform/detail/pack_impl.hpp
==============================================================================
--- branches/release/boost/proto/transform/detail/pack_impl.hpp (original)
+++ branches/release/boost/proto/transform/detail/pack_impl.hpp 2012-08-08 15:14:03 EDT (Wed, 08 Aug 2012)
@@ -48,10 +48,10 @@
         template<typename Ret BOOST_PP_ENUM_TRAILING_PARAMS(N, typename A)>
         struct BOOST_PP_CAT(expand_pattern_rest_, N)
         {
- template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_PP_INC(M), typename B, void)>
+ template<BOOST_PP_ENUM_PARAMS_WITH_A_DEFAULT(BOOST_PP_INC(M), typename C, void)>
             struct cat;
 
- #define BOOST_PP_ITERATION_PARAMS_2 \
+ #define BOOST_PP_ITERATION_PARAMS_2 \
                 (3, (1, M, <boost/proto/transform/detail/pack_impl.hpp>))
             #include BOOST_PP_ITERATE()
         };
@@ -61,10 +61,10 @@
     #else
         #define I BOOST_PP_ITERATION()
         #define J BOOST_PP_RELATIVE_ITERATION(1)
- template<BOOST_PP_ENUM_PARAMS(I, typename B)>
- struct cat<BOOST_PP_ENUM_PARAMS(I, B)>
+ template<BOOST_PP_ENUM_PARAMS(I, typename C)>
+ struct cat<BOOST_PP_ENUM_PARAMS(I, C)>
             {
- typedef msvc_fun_workaround<Ret(BOOST_PP_ENUM_PARAMS(J, A) BOOST_PP_COMMA_IF(J) BOOST_PP_ENUM_PARAMS(I, B))> type;
+ typedef msvc_fun_workaround<Ret(BOOST_PP_ENUM_PARAMS(J, A) BOOST_PP_COMMA_IF(J) BOOST_PP_ENUM_PARAMS(I, C))> type;
             };
         #undef J
         #undef I

Modified: branches/release/boost/proto/transform/detail/preprocessed/default_function_impl.hpp
==============================================================================
--- branches/release/boost/proto/transform/detail/preprocessed/default_function_impl.hpp (original)
+++ branches/release/boost/proto/transform/detail/preprocessed/default_function_impl.hpp 2012-08-08 15:14:03 EDT (Wed, 08 Aug 2012)
@@ -49,7 +49,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
                 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
             )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ));
         }
@@ -97,7 +97,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
                 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
             )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ));
         }
@@ -145,7 +145,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
                 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
             )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ));
         }
@@ -193,7 +193,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
                 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
             )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ));
         }
@@ -241,7 +241,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
                 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
             )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ));
         }
@@ -289,7 +289,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
                 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
             )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ) , typename Grammar::template impl<e7, State, Data>()( proto::child_c< 7>( e), s, d ));
         }
@@ -337,7 +337,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
                 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
             )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ) , typename Grammar::template impl<e7, State, Data>()( proto::child_c< 7>( e), s, d ) , typename Grammar::template impl<e8, State, Data>()( proto::child_c< 8>( e), s, d ));
         }
@@ -385,7 +385,7 @@
             BOOST_PROTO_USE_GET_POINTER();
             typedef typename detail::classtypeof<function_type>::type class_type;
             return (
- BOOST_PROTO_GET_POINTER(class_type, BOOST_PROTO_DEFAULT_EVAL(~, 1, e)) ->*
+ BOOST_PROTO_GET_POINTER(class_type, (typename Grammar::template impl<e1, State, Data>()( proto::child_c< 1>( e), s, d ))) ->*
                 typename Grammar::template impl<e0, State, Data>()( proto::child_c< 0>( e), s, d )
             )(typename Grammar::template impl<e2, State, Data>()( proto::child_c< 2>( e), s, d ) , typename Grammar::template impl<e3, State, Data>()( proto::child_c< 3>( e), s, d ) , typename Grammar::template impl<e4, State, Data>()( proto::child_c< 4>( e), s, d ) , typename Grammar::template impl<e5, State, Data>()( proto::child_c< 5>( e), s, d ) , typename Grammar::template impl<e6, State, Data>()( proto::child_c< 6>( e), s, d ) , typename Grammar::template impl<e7, State, Data>()( proto::child_c< 7>( e), s, d ) , typename Grammar::template impl<e8, State, Data>()( proto::child_c< 8>( e), s, d ) , typename Grammar::template impl<e9, State, Data>()( proto::child_c< 9>( e), s, d ));
         }

Modified: branches/release/boost/proto/transform/detail/preprocessed/pack_impl.hpp
==============================================================================
--- branches/release/boost/proto/transform/detail/preprocessed/pack_impl.hpp (original)
+++ branches/release/boost/proto/transform/detail/preprocessed/pack_impl.hpp 2012-08-08 15:14:03 EDT (Wed, 08 Aug 2012)
@@ -18,57 +18,57 @@
         template<typename Ret >
         struct expand_pattern_rest_0
         {
- template<typename B0 = void , typename B1 = void , typename B2 = void , typename B3 = void , typename B4 = void , typename B5 = void , typename B6 = void , typename B7 = void , typename B8 = void , typename B9 = void , typename B10 = void>
+ template<typename C0 = void , typename C1 = void , typename C2 = void , typename C3 = void , typename C4 = void , typename C5 = void , typename C6 = void , typename C7 = void , typename C8 = void , typename C9 = void , typename C10 = void>
             struct cat;
- template<typename B0>
- struct cat<B0>
+ template<typename C0>
+ struct cat<C0>
             {
- typedef msvc_fun_workaround<Ret( B0)> type;
+ typedef msvc_fun_workaround<Ret( C0)> type;
             };
- template<typename B0 , typename B1>
- struct cat<B0 , B1>
+ template<typename C0 , typename C1>
+ struct cat<C0 , C1>
             {
- typedef msvc_fun_workaround<Ret( B0 , B1)> type;
+ typedef msvc_fun_workaround<Ret( C0 , C1)> type;
             };
- template<typename B0 , typename B1 , typename B2>
- struct cat<B0 , B1 , B2>
+ template<typename C0 , typename C1 , typename C2>
+ struct cat<C0 , C1 , C2>
             {
- typedef msvc_fun_workaround<Ret( B0 , B1 , B2)> type;
+ typedef msvc_fun_workaround<Ret( C0 , C1 , C2)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3>
- struct cat<B0 , B1 , B2 , B3>
+ template<typename C0 , typename C1 , typename C2 , typename C3>
+ struct cat<C0 , C1 , C2 , C3>
             {
- typedef msvc_fun_workaround<Ret( B0 , B1 , B2 , B3)> type;
+ typedef msvc_fun_workaround<Ret( C0 , C1 , C2 , C3)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4>
- struct cat<B0 , B1 , B2 , B3 , B4>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4>
+ struct cat<C0 , C1 , C2 , C3 , C4>
             {
- typedef msvc_fun_workaround<Ret( B0 , B1 , B2 , B3 , B4)> type;
+ typedef msvc_fun_workaround<Ret( C0 , C1 , C2 , C3 , C4)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5>
             {
- typedef msvc_fun_workaround<Ret( B0 , B1 , B2 , B3 , B4 , B5)> type;
+ typedef msvc_fun_workaround<Ret( C0 , C1 , C2 , C3 , C4 , C5)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5 , typename B6>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5 , B6>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5 , C6>
             {
- typedef msvc_fun_workaround<Ret( B0 , B1 , B2 , B3 , B4 , B5 , B6)> type;
+ typedef msvc_fun_workaround<Ret( C0 , C1 , C2 , C3 , C4 , C5 , C6)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5 , typename B6 , typename B7>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7>
             {
- typedef msvc_fun_workaround<Ret( B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7)> type;
+ typedef msvc_fun_workaround<Ret( C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5 , typename B6 , typename B7 , typename B8>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7 , B8>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7 , typename C8>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8>
             {
- typedef msvc_fun_workaround<Ret( B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7 , B8)> type;
+ typedef msvc_fun_workaround<Ret( C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5 , typename B6 , typename B7 , typename B8 , typename B9>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7 , B8 , B9>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7 , typename C8 , typename C9>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9>
             {
- typedef msvc_fun_workaround<Ret( B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7 , B8 , B9)> type;
+ typedef msvc_fun_workaround<Ret( C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8 , C9)> type;
             };
         };
         template<typename Fun, typename Cont>
@@ -84,52 +84,52 @@
         template<typename Ret , typename A0>
         struct expand_pattern_rest_1
         {
- template<typename B0 = void , typename B1 = void , typename B2 = void , typename B3 = void , typename B4 = void , typename B5 = void , typename B6 = void , typename B7 = void , typename B8 = void , typename B9 = void>
+ template<typename C0 = void , typename C1 = void , typename C2 = void , typename C3 = void , typename C4 = void , typename C5 = void , typename C6 = void , typename C7 = void , typename C8 = void , typename C9 = void>
             struct cat;
- template<typename B0>
- struct cat<B0>
+ template<typename C0>
+ struct cat<C0>
             {
- typedef msvc_fun_workaround<Ret(A0 , B0)> type;
+ typedef msvc_fun_workaround<Ret(A0 , C0)> type;
             };
- template<typename B0 , typename B1>
- struct cat<B0 , B1>
+ template<typename C0 , typename C1>
+ struct cat<C0 , C1>
             {
- typedef msvc_fun_workaround<Ret(A0 , B0 , B1)> type;
+ typedef msvc_fun_workaround<Ret(A0 , C0 , C1)> type;
             };
- template<typename B0 , typename B1 , typename B2>
- struct cat<B0 , B1 , B2>
+ template<typename C0 , typename C1 , typename C2>
+ struct cat<C0 , C1 , C2>
             {
- typedef msvc_fun_workaround<Ret(A0 , B0 , B1 , B2)> type;
+ typedef msvc_fun_workaround<Ret(A0 , C0 , C1 , C2)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3>
- struct cat<B0 , B1 , B2 , B3>
+ template<typename C0 , typename C1 , typename C2 , typename C3>
+ struct cat<C0 , C1 , C2 , C3>
             {
- typedef msvc_fun_workaround<Ret(A0 , B0 , B1 , B2 , B3)> type;
+ typedef msvc_fun_workaround<Ret(A0 , C0 , C1 , C2 , C3)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4>
- struct cat<B0 , B1 , B2 , B3 , B4>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4>
+ struct cat<C0 , C1 , C2 , C3 , C4>
             {
- typedef msvc_fun_workaround<Ret(A0 , B0 , B1 , B2 , B3 , B4)> type;
+ typedef msvc_fun_workaround<Ret(A0 , C0 , C1 , C2 , C3 , C4)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5>
             {
- typedef msvc_fun_workaround<Ret(A0 , B0 , B1 , B2 , B3 , B4 , B5)> type;
+ typedef msvc_fun_workaround<Ret(A0 , C0 , C1 , C2 , C3 , C4 , C5)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5 , typename B6>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5 , B6>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5 , C6>
             {
- typedef msvc_fun_workaround<Ret(A0 , B0 , B1 , B2 , B3 , B4 , B5 , B6)> type;
+ typedef msvc_fun_workaround<Ret(A0 , C0 , C1 , C2 , C3 , C4 , C5 , C6)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5 , typename B6 , typename B7>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7>
             {
- typedef msvc_fun_workaround<Ret(A0 , B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7)> type;
+ typedef msvc_fun_workaround<Ret(A0 , C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5 , typename B6 , typename B7 , typename B8>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7 , B8>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7 , typename C8>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8>
             {
- typedef msvc_fun_workaround<Ret(A0 , B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7 , B8)> type;
+ typedef msvc_fun_workaround<Ret(A0 , C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7 , C8)> type;
             };
         };
         template<typename Fun, typename Cont>
@@ -145,47 +145,47 @@
         template<typename Ret , typename A0 , typename A1>
         struct expand_pattern_rest_2
         {
- template<typename B0 = void , typename B1 = void , typename B2 = void , typename B3 = void , typename B4 = void , typename B5 = void , typename B6 = void , typename B7 = void , typename B8 = void>
+ template<typename C0 = void , typename C1 = void , typename C2 = void , typename C3 = void , typename C4 = void , typename C5 = void , typename C6 = void , typename C7 = void , typename C8 = void>
             struct cat;
- template<typename B0>
- struct cat<B0>
+ template<typename C0>
+ struct cat<C0>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , B0)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , C0)> type;
             };
- template<typename B0 , typename B1>
- struct cat<B0 , B1>
+ template<typename C0 , typename C1>
+ struct cat<C0 , C1>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , B0 , B1)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , C0 , C1)> type;
             };
- template<typename B0 , typename B1 , typename B2>
- struct cat<B0 , B1 , B2>
+ template<typename C0 , typename C1 , typename C2>
+ struct cat<C0 , C1 , C2>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , B0 , B1 , B2)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , C0 , C1 , C2)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3>
- struct cat<B0 , B1 , B2 , B3>
+ template<typename C0 , typename C1 , typename C2 , typename C3>
+ struct cat<C0 , C1 , C2 , C3>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , B0 , B1 , B2 , B3)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , C0 , C1 , C2 , C3)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4>
- struct cat<B0 , B1 , B2 , B3 , B4>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4>
+ struct cat<C0 , C1 , C2 , C3 , C4>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , B0 , B1 , B2 , B3 , B4)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , C0 , C1 , C2 , C3 , C4)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , B0 , B1 , B2 , B3 , B4 , B5)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , C0 , C1 , C2 , C3 , C4 , C5)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5 , typename B6>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5 , B6>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5 , C6>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , B0 , B1 , B2 , B3 , B4 , B5 , B6)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , C0 , C1 , C2 , C3 , C4 , C5 , C6)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5 , typename B6 , typename B7>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6 , typename C7>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , B0 , B1 , B2 , B3 , B4 , B5 , B6 , B7)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , C0 , C1 , C2 , C3 , C4 , C5 , C6 , C7)> type;
             };
         };
         template<typename Fun, typename Cont>
@@ -201,42 +201,42 @@
         template<typename Ret , typename A0 , typename A1 , typename A2>
         struct expand_pattern_rest_3
         {
- template<typename B0 = void , typename B1 = void , typename B2 = void , typename B3 = void , typename B4 = void , typename B5 = void , typename B6 = void , typename B7 = void>
+ template<typename C0 = void , typename C1 = void , typename C2 = void , typename C3 = void , typename C4 = void , typename C5 = void , typename C6 = void , typename C7 = void>
             struct cat;
- template<typename B0>
- struct cat<B0>
+ template<typename C0>
+ struct cat<C0>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , B0)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , C0)> type;
             };
- template<typename B0 , typename B1>
- struct cat<B0 , B1>
+ template<typename C0 , typename C1>
+ struct cat<C0 , C1>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , B0 , B1)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , C0 , C1)> type;
             };
- template<typename B0 , typename B1 , typename B2>
- struct cat<B0 , B1 , B2>
+ template<typename C0 , typename C1 , typename C2>
+ struct cat<C0 , C1 , C2>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , B0 , B1 , B2)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , C0 , C1 , C2)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3>
- struct cat<B0 , B1 , B2 , B3>
+ template<typename C0 , typename C1 , typename C2 , typename C3>
+ struct cat<C0 , C1 , C2 , C3>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , B0 , B1 , B2 , B3)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , C0 , C1 , C2 , C3)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4>
- struct cat<B0 , B1 , B2 , B3 , B4>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4>
+ struct cat<C0 , C1 , C2 , C3 , C4>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , B0 , B1 , B2 , B3 , B4)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , C0 , C1 , C2 , C3 , C4)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , B0 , B1 , B2 , B3 , B4 , B5)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , C0 , C1 , C2 , C3 , C4 , C5)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5 , typename B6>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5 , B6>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5 , typename C6>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5 , C6>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , B0 , B1 , B2 , B3 , B4 , B5 , B6)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , C0 , C1 , C2 , C3 , C4 , C5 , C6)> type;
             };
         };
         template<typename Fun, typename Cont>
@@ -252,37 +252,37 @@
         template<typename Ret , typename A0 , typename A1 , typename A2 , typename A3>
         struct expand_pattern_rest_4
         {
- template<typename B0 = void , typename B1 = void , typename B2 = void , typename B3 = void , typename B4 = void , typename B5 = void , typename B6 = void>
+ template<typename C0 = void , typename C1 = void , typename C2 = void , typename C3 = void , typename C4 = void , typename C5 = void , typename C6 = void>
             struct cat;
- template<typename B0>
- struct cat<B0>
+ template<typename C0>
+ struct cat<C0>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , B0)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , C0)> type;
             };
- template<typename B0 , typename B1>
- struct cat<B0 , B1>
+ template<typename C0 , typename C1>
+ struct cat<C0 , C1>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , B0 , B1)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , C0 , C1)> type;
             };
- template<typename B0 , typename B1 , typename B2>
- struct cat<B0 , B1 , B2>
+ template<typename C0 , typename C1 , typename C2>
+ struct cat<C0 , C1 , C2>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , B0 , B1 , B2)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , C0 , C1 , C2)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3>
- struct cat<B0 , B1 , B2 , B3>
+ template<typename C0 , typename C1 , typename C2 , typename C3>
+ struct cat<C0 , C1 , C2 , C3>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , B0 , B1 , B2 , B3)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , C0 , C1 , C2 , C3)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4>
- struct cat<B0 , B1 , B2 , B3 , B4>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4>
+ struct cat<C0 , C1 , C2 , C3 , C4>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , B0 , B1 , B2 , B3 , B4)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , C0 , C1 , C2 , C3 , C4)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4 , typename B5>
- struct cat<B0 , B1 , B2 , B3 , B4 , B5>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4 , typename C5>
+ struct cat<C0 , C1 , C2 , C3 , C4 , C5>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , B0 , B1 , B2 , B3 , B4 , B5)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , C0 , C1 , C2 , C3 , C4 , C5)> type;
             };
         };
         template<typename Fun, typename Cont>
@@ -298,32 +298,32 @@
         template<typename Ret , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         struct expand_pattern_rest_5
         {
- template<typename B0 = void , typename B1 = void , typename B2 = void , typename B3 = void , typename B4 = void , typename B5 = void>
+ template<typename C0 = void , typename C1 = void , typename C2 = void , typename C3 = void , typename C4 = void , typename C5 = void>
             struct cat;
- template<typename B0>
- struct cat<B0>
+ template<typename C0>
+ struct cat<C0>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , B0)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , C0)> type;
             };
- template<typename B0 , typename B1>
- struct cat<B0 , B1>
+ template<typename C0 , typename C1>
+ struct cat<C0 , C1>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , B0 , B1)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , C0 , C1)> type;
             };
- template<typename B0 , typename B1 , typename B2>
- struct cat<B0 , B1 , B2>
+ template<typename C0 , typename C1 , typename C2>
+ struct cat<C0 , C1 , C2>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , B0 , B1 , B2)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , C0 , C1 , C2)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3>
- struct cat<B0 , B1 , B2 , B3>
+ template<typename C0 , typename C1 , typename C2 , typename C3>
+ struct cat<C0 , C1 , C2 , C3>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , B0 , B1 , B2 , B3)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , C0 , C1 , C2 , C3)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3 , typename B4>
- struct cat<B0 , B1 , B2 , B3 , B4>
+ template<typename C0 , typename C1 , typename C2 , typename C3 , typename C4>
+ struct cat<C0 , C1 , C2 , C3 , C4>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , B0 , B1 , B2 , B3 , B4)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , C0 , C1 , C2 , C3 , C4)> type;
             };
         };
         template<typename Fun, typename Cont>
@@ -339,27 +339,27 @@
         template<typename Ret , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         struct expand_pattern_rest_6
         {
- template<typename B0 = void , typename B1 = void , typename B2 = void , typename B3 = void , typename B4 = void>
+ template<typename C0 = void , typename C1 = void , typename C2 = void , typename C3 = void , typename C4 = void>
             struct cat;
- template<typename B0>
- struct cat<B0>
+ template<typename C0>
+ struct cat<C0>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , B0)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , C0)> type;
             };
- template<typename B0 , typename B1>
- struct cat<B0 , B1>
+ template<typename C0 , typename C1>
+ struct cat<C0 , C1>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , B0 , B1)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , C0 , C1)> type;
             };
- template<typename B0 , typename B1 , typename B2>
- struct cat<B0 , B1 , B2>
+ template<typename C0 , typename C1 , typename C2>
+ struct cat<C0 , C1 , C2>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , B0 , B1 , B2)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , C0 , C1 , C2)> type;
             };
- template<typename B0 , typename B1 , typename B2 , typename B3>
- struct cat<B0 , B1 , B2 , B3>
+ template<typename C0 , typename C1 , typename C2 , typename C3>
+ struct cat<C0 , C1 , C2 , C3>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , B0 , B1 , B2 , B3)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , C0 , C1 , C2 , C3)> type;
             };
         };
         template<typename Fun, typename Cont>
@@ -375,22 +375,22 @@
         template<typename Ret , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         struct expand_pattern_rest_7
         {
- template<typename B0 = void , typename B1 = void , typename B2 = void , typename B3 = void>
+ template<typename C0 = void , typename C1 = void , typename C2 = void , typename C3 = void>
             struct cat;
- template<typename B0>
- struct cat<B0>
+ template<typename C0>
+ struct cat<C0>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , B0)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , C0)> type;
             };
- template<typename B0 , typename B1>
- struct cat<B0 , B1>
+ template<typename C0 , typename C1>
+ struct cat<C0 , C1>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , B0 , B1)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , C0 , C1)> type;
             };
- template<typename B0 , typename B1 , typename B2>
- struct cat<B0 , B1 , B2>
+ template<typename C0 , typename C1 , typename C2>
+ struct cat<C0 , C1 , C2>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , B0 , B1 , B2)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , C0 , C1 , C2)> type;
             };
         };
         template<typename Fun, typename Cont>
@@ -406,17 +406,17 @@
         template<typename Ret , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         struct expand_pattern_rest_8
         {
- template<typename B0 = void , typename B1 = void , typename B2 = void>
+ template<typename C0 = void , typename C1 = void , typename C2 = void>
             struct cat;
- template<typename B0>
- struct cat<B0>
+ template<typename C0>
+ struct cat<C0>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , B0)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , C0)> type;
             };
- template<typename B0 , typename B1>
- struct cat<B0 , B1>
+ template<typename C0 , typename C1>
+ struct cat<C0 , C1>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , B0 , B1)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , C0 , C1)> type;
             };
         };
         template<typename Fun, typename Cont>
@@ -432,11 +432,11 @@
         template<typename Ret , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         struct expand_pattern_rest_9
         {
- template<typename B0 = void , typename B1 = void>
+ template<typename C0 = void , typename C1 = void>
             struct cat;
- template<typename B0>
- struct cat<B0>
+ template<typename C0>
+ struct cat<C0>
             {
- typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , B0)> type;
+ typedef msvc_fun_workaround<Ret(A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , C0)> type;
             };
         };


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk