Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r68688 - in sandbox/SOC/2010/phoenix3/boost/phoenix: bind core core/detail function fusion object object/detail object/detail/preprocessed operator operator/detail operator/preprocessed scope scope/detail/preprocessed statement statement/detail/preprocessed
From: thom.heller_at_[hidden]
Date: 2011-02-07 01:44:15


Author: theller
Date: 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
New Revision: 68688
URL: http://svn.boost.org/trac/boost/changeset/68688

Log:
added call
Added:
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/call.hpp (contents, props changed)
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/call.hpp (contents, props changed)
Text files modified:
   sandbox/SOC/2010/phoenix3/boost/phoenix/bind/bind.hpp | 2
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/expression.hpp | 225 ++++--
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/nothing.hpp | 8
   sandbox/SOC/2010/phoenix3/boost/phoenix/core/terminal.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/function/function.hpp | 2
   sandbox/SOC/2010/phoenix3/boost/phoenix/fusion/at.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/const_cast.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/construct.hpp | 14
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/delete.hpp | 34
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct_eval.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new_eval.hpp | 22
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp | 160 +++-
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp | 320 ++++++---
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp | 480 ++++++++++-----
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp | 640 +++++++++++++------
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/dynamic_cast.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/new.hpp | 71 -
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/reinterpret_cast.hpp | 11
   sandbox/SOC/2010/phoenix3/boost/phoenix/object/static_cast.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/define_operator.hpp | 2
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp | 6
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/if_else.hpp | 2
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/member.hpp | 49 +
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_10.hpp | 309 +++++----
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_20.hpp | 619 +++++++++++--------
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_30.hpp | 929 +++++++++++++++++------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_40.hpp | 1239 ++++++++++++++++++++++-----------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_10.hpp | 15
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_20.hpp | 15
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_30.hpp | 15
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_40.hpp | 15
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_10.hpp | 242 +-----
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_20.hpp | 502 ++-------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_30.hpp | 762 +++--------------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_40.hpp | 1022 ++++----------------------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/dynamic.hpp | 30
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp | 15
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp | 5
   sandbox/SOC/2010/phoenix3/boost/phoenix/scope/this.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp | 663 ---------------------
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/do_while.hpp | 12
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/for.hpp | 16
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/if.hpp | 35
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/sequence.hpp | 2
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp | 15
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/throw.hpp | 4
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/try_catch.hpp | 2
   sandbox/SOC/2010/phoenix3/boost/phoenix/statement/while.hpp | 12
   49 files changed, 3638 insertions(+), 4995 deletions(-)

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/bind/bind.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/bind/bind.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/bind/bind.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -18,7 +18,7 @@
 #ifndef PHOENIX_BIND_BIND_HPP
 #define PHOENIX_BIND_BIND_HPP
 
-#include <boost/phoenix/limits.hpp>
+#include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/function.hpp>
 #include <boost/phoenix/support/iterate.hpp>
 #include <boost/utility/result_of.hpp>

Added: sandbox/SOC/2010/phoenix3/boost/phoenix/core/call.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/call.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -0,0 +1,43 @@
+/*==============================================================================
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2011 Thomas Heller
+
+ 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)
+==============================================================================*/
+#ifndef PHOENIX_CORE_CALL_HPP
+#define PHOENIX_CORE_CALL_HPP
+
+namespace boost { namespace phoenix
+{
+ namespace detail
+ {
+ template <typename Fun, typename Expr, typename State, typename Data, long Arity = proto::arity_of<Expr>::value>
+ struct call_impl;
+ }
+
+ template <typename Fun>
+ struct call
+ : proto::transform<call<Fun> >
+ {
+ template <typename Expr, typename State, typename Data>
+ struct impl
+ : detail::call_impl<Fun, Expr, State, Data>
+ {};
+ };
+
+ #include <boost/phoenix/core/detail/call.hpp>
+
+}
+
+ namespace proto
+ {
+ template <typename Fun>
+ struct is_callable<phoenix::call<Fun> > : mpl::true_ {};
+ }
+
+}
+
+
+
+#endif

Added: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/call.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/call.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -0,0 +1,86 @@
+
+/*
+#if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
+#ifndef PHOENIX_CORE_DETAIL_CALL_HPP
+#define PHOENIX_CORE_DETAIL_CALL_HPP
+
+#endif
+#else
+*/
+#if !PHOENIX_IS_ITERATING
+
+#ifndef PHOENIX_CORE_DETAIL_CALL_HPP
+#define PHOENIX_CORE_DETAIL_CALL_HPP
+
+#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 2, line: 0, output: "preprocessed/construct_eval_" PHOENIX_LIMIT_STR ".hpp")
+#endif
+
+/*==============================================================================
+ Copyright (c) 2005-2010 Joel de Guzman
+ Copyright (c) 2010 Thomas Heller
+
+ 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)
+==============================================================================*/
+
+#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(preserve: 1)
+#endif
+
+#define M0(Z, N ,D) \
+ typedef \
+ typename proto::result_of::child_c<Expr, N>::type \
+ BOOST_PP_CAT(A, N); \
+/**/
+#define M1(Z, N ,D) \
+ BOOST_PP_COMMA() proto::child_c<N>(e)
+/**/
+
+
+ namespace detail
+ {
+#define PHOENIX_ITERATION_PARAMS \
+ (3, (1, PHOENIX_LIMIT, \
+ <boost/phoenix/core/detail/call.hpp>))
+#include PHOENIX_ITERATE()
+ }
+
+#undef M0
+#undef M1
+
+#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
+#pragma wave option(output: null)
+#endif
+
+#endif
+
+#else
+
+ template <typename Fun, typename Expr, typename State, typename Data>
+ struct call_impl<Fun, Expr, State, Data, PHOENIX_ITERATION>
+ : proto::transform_impl<Expr, State, Data>
+ {
+ typedef
+ typename result_of::context<State, Data>::type
+ context_type;
+
+ BOOST_PP_REPEAT(PHOENIX_ITERATION, M0, _)
+
+ typedef
+ typename boost::result_of<Fun(context_type, PHOENIX_A)>::type
+ result_type;
+
+ result_type operator()(
+ typename call_impl::expr_param e
+ , typename call_impl::state_param s
+ , typename call_impl::data_param d
+ ) const
+ {
+ return Fun()(context(s, d) BOOST_PP_REPEAT(PHOENIX_ITERATION, M1, _));
+ }
+ };
+
+#endif
+
+//#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/expression.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/expression.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/detail/expression.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -15,35 +15,114 @@
 #include <boost/preprocessor/comparison/equal.hpp>
 #include <boost/preprocessor/seq/size.hpp>
 #include <boost/preprocessor/seq/enum.hpp>
+#include <boost/preprocessor/seq/for_each.hpp>
 #include <boost/preprocessor/seq/pop_back.hpp>
+#include <boost/preprocessor/seq/reverse.hpp>
 #include <boost/preprocessor/tuple/elem.hpp>
 #include <boost/preprocessor/enum_params.hpp>
 #include <boost/preprocessor/repeat_from_to.hpp>
 
-#define PHOENIX_DEFINE_EXPRESSION(NAME, SEQ) \
- namespace tag { \
- struct NAME {}; \
+#define PHOENIX_DEFINE_EXPRESSION(NAME_SEQ, SEQ) \
+ PHOENIX_DEFINE_EXPRESSION_BASE( \
+ NAME_SEQ \
+ , SEQ \
+ , PHOENIX_DEFINE_EXPRESSION_EXPRESSION_DEFAULT \
+ , PHOENIX_DEFINE_EXPRESSION_RULE_DEFAULT \
+ , _ \
+ ) \
+/**/
+
+#define PHOENIX_DEFINE_EXPRESSION_VARARG(NAME_SEQ, GRAMMAR_SEQ, LIMIT) \
+ PHOENIX_DEFINE_EXPRESSION_BASE( \
+ NAME_SEQ \
+ , GRAMMAR_SEQ \
+ , PHOENIX_DEFINE_EXPRESSION_EXPRESSION_VARARG \
+ , PHOENIX_DEFINE_EXPRESSION_RULE_VARARG \
+ , LIMIT \
+ ) \
+/**/
+
+#define PHOENIX_DEFINE_EXPRESSION_EXT(ACTOR, NAME_SEQ, GRAMMAR_SEQ) \
+ PHOENIX_DEFINE_EXPRESSION_BASE( \
+ NAME_SEQ \
+ , GRAMMAR_SEQ \
+ , PHOENIX_DEFINE_EXPRESSION_EXPRESSION_EXT \
+ , PHOENIX_DEFINE_EXPRESSION_RULE_VARARG \
+ , ACTOR \
+ ) \
+/**/
+
+#define PHOENIX_DEFINE_EXPRESSION_EXT_VARARG(ACTOR, NAME, GRAMMAR, LIMIT) \
+ PHOENIX_DEFINE_EXPRESSION_BASE( \
+ NAME_SEQ \
+ , GRAMMAR_SEQ \
+ , PHOENIX_DEFINE_EXPRESSION_EXPRESSION_VARARG_EXT \
+ , PHOENIX_DEFINE_EXPRESSION_RULE_VARARG \
+ , ACTOR \
+ ) \
+/**/
+
+#define PHOENIX_DEFINE_EXPRESSION_NAMESPACE(R, D, E) \
+namespace E {
+
+#define PHOENIX_DEFINE_EXPRESSION_NAMESPACE_END(R, D, E) \
+}
+
+#define PHOENIX_DEFINE_EXPRESSION_NS(R, D, E) \
+E ::
+
+#define PHOENIX_DEFINE_EXPRESSION_BASE(NAME_SEQ, GRAMMAR_SEQ, EXPRESSION, RULE, DATA) \
+BOOST_PP_SEQ_FOR_EACH( \
+ PHOENIX_DEFINE_EXPRESSION_NAMESPACE \
+ , _ \
+ , BOOST_PP_SEQ_POP_BACK(NAME_SEQ) \
+) \
+ namespace tag \
+ { \
+ struct BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) {}; \
     } \
- \
     namespace expression \
     { \
- template <BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(SEQ), typename A)> \
- struct NAME \
- : expr<tag:: NAME, BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(SEQ), A)> \
- {}; \
+ EXPRESSION(NAME_SEQ, GRAMMAR_SEQ, DATA) \
     } \
- \
- namespace rule { \
- struct NAME \
- : expression:: NAME <BOOST_PP_SEQ_ENUM(SEQ)> \
- {}; \
+ namespace rule \
+ { \
+ RULE(NAME_SEQ, GRAMMAR_SEQ, DATA) \
     } \
- \
+BOOST_PP_SEQ_FOR_EACH( \
+ PHOENIX_DEFINE_EXPRESSION_NAMESPACE_END \
+ , _ \
+ , BOOST_PP_SEQ_POP_BACK(NAME_SEQ) \
+) \
+namespace boost { namespace phoenix \
+{ \
     template <typename Dummy> \
- struct meta_grammar::case_<tag:: NAME, Dummy> \
- : proto::when<rule:: NAME, proto::external_transform> \
+ struct meta_grammar::case_< \
+ BOOST_PP_SEQ_FOR_EACH(PHOENIX_DEFINE_EXPRESSION_NS, _, BOOST_PP_SEQ_POP_BACK(NAME_SEQ)) tag:: BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
+ , Dummy \
+ > \
+ : enable_rule< \
+ BOOST_PP_SEQ_FOR_EACH(PHOENIX_DEFINE_EXPRESSION_NS, _, BOOST_PP_SEQ_POP_BACK(NAME_SEQ)) rule:: BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
+ > \
     {}; \
- /**/
+} } \
+/**/
+
+#define PHOENIX_DEFINE_EXPRESSION_EXPRESSION_DEFAULT(NAME_SEQ, GRAMMAR_SEQ, D) \
+ template <PHOENIX_typename_A(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))> \
+ struct BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
+ : expr< \
+ tag:: BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
+ , BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ), A)> \
+ {}; \
+/**/
+
+#define PHOENIX_DEFINE_EXPRESSION_RULE_DEFAULT(NAME_SEQ, GRAMMAR_SEQ, D) \
+struct BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
+ : expression:: BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
+ <BOOST_PP_SEQ_ENUM(GRAMMAR_SEQ)> \
+ {}; \
+/**/
 
 #define PHOENIX_DEFINE_EXPRESSION_VARARG_R(_, N, NAME) \
     template < \
@@ -71,79 +150,54 @@
     {}; \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_VARARG(NAME, GRAMMAR, LIMIT) \
- namespace tag { \
- struct NAME {}; \
- } \
- \
- namespace expression \
- { \
+#define PHOENIX_DEFINE_EXPRESSION_EXPRESSION_VARARG(NAME_SEQ, GRAMMAR_SEQ, LIMIT)\
         template < \
             PHOENIX_typename_A_void( \
- BOOST_PP_ADD(LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR))) \
+ BOOST_PP_ADD( \
+ LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))) \
             ) \
           , typename Dummy = void \
> \
- struct NAME; \
+ struct BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)); \
                                                                                 \
         BOOST_PP_REPEAT_FROM_TO( \
             1 \
- , BOOST_PP_ADD(LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR))) \
+ , BOOST_PP_ADD(LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))) \
           , PHOENIX_DEFINE_EXPRESSION_VARARG_R \
- , (NAME, BOOST_PP_SEQ_POP_BACK(GRAMMAR)) \
+ , ( \
+ BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
+ , BOOST_PP_SEQ_POP_BACK(GRAMMAR_SEQ) \
+ ) \
         ) \
- } \
- \
- namespace rule { \
- struct NAME \
- : expression:: NAME < \
+/**/
+
+#define PHOENIX_DEFINE_EXPRESSION_RULE_VARARG(NAME_SEQ, GRAMMAR_SEQ, LIMIT) \
+ struct BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
+ : expression:: BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) < \
                 BOOST_PP_IF( \
- BOOST_PP_EQUAL(1, BOOST_PP_SEQ_SIZE(GRAMMAR)) \
+ BOOST_PP_EQUAL(1, BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ)) \
                   , BOOST_PP_EMPTY() \
- , BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_POP_BACK(GRAMMAR)) \
+ , BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_POP_BACK(GRAMMAR_SEQ)) \
                 ) \
- BOOST_PP_COMMA_IF(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR))) \
+ BOOST_PP_COMMA_IF(BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))) \
                 proto::vararg< \
                     BOOST_PP_SEQ_ELEM( \
- BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR)) \
- , GRAMMAR \
+ BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ)) \
+ , GRAMMAR_SEQ \
                     ) \
> \
> \
         {}; \
- } \
- \
- template <typename Dummy> \
- struct meta_grammar::case_<tag:: NAME, Dummy> \
- : proto::when<rule:: NAME, proto::external_transform> \
- {}; \
 /**/
 
-#define PHOENIX_DEFINE_EXPRESSION_EXT(ACTOR, NAME, SEQ) \
- namespace tag { \
- struct NAME {}; \
- } \
- \
- namespace expression \
- { \
- template <BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(SEQ), typename A)> \
- struct NAME \
+#define PHOENIX_DEFINE_EXPRESSION_EXPRESSION_EXT(NAME_SEQ, GRAMMAR_SEQ, ACTOR) \
+ template <PHOENIX_typename_A(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))> \
+ struct BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
             : expr_ext< \
                 ACTOR \
- , tag:: NAME, BOOST_PP_ENUM_PARAMS(BOOST_PP_SEQ_SIZE(SEQ), A)> \
+ , tag:: BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(NAME_SEQ)) \
+ , PHOENIX_A(BOOST_PP_SEQ_SIZE(GRAMMAR_SEQ))> \
         {}; \
- } \
- \
- namespace rule { \
- struct NAME \
- : expression:: NAME <BOOST_PP_SEQ_ENUM(SEQ)> \
- {}; \
- } \
- \
- template <typename Dummy> \
- struct meta_grammar::case_<tag:: NAME, Dummy> \
- : proto::when<rule:: NAME, proto::external_transform> \
- {}; \
 /**/
 
 #define PHOENIX_DEFINE_EXPRESSION_EXT_VARARG_R(_, N, NAME) \
@@ -171,33 +225,32 @@
             ) \
> \
     {}; \
+/**/
 
-#define PHOENIX_DEFINE_EXPRESSION_EXT_VARARG(ACTOR, NAME, GRAMMAR, LIMIT) \
- namespace tag { \
- struct NAME {}; \
- } \
- \
- namespace expression \
- { \
+#define PHOENIX_DEFINE_EXPRESSION_EXRPESSION_VARARG_EXT(N, G, D) \
         template < \
             PHOENIX_typename_A_void( \
- BOOST_PP_ADD(LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR))) \
+ BOOST_PP_ADD(LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(G))) \
             ) \
           , typename Dummy = void \
> \
- struct NAME; \
+ struct BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(N)); \
                                                                                 \
         BOOST_PP_REPEAT_FROM_TO( \
             1 \
- , BOOST_PP_ADD(LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(GRAMMAR))) \
+ , BOOST_PP_ADD(LIMIT, BOOST_PP_DEC(BOOST_PP_SEQ_SIZE(G))) \
           , PHOENIX_DEFINE_EXPRESSION_EXT_VARARG_R \
- , (NAME, BOOST_PP_SEQ_POP_BACK(GRAMMAR), ACTOR) \
+ , ( \
+ BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(N)) \
+ , BOOST_PP_SEQ_POP_BACK(G) \
+ , ACTOR \
+ ) \
         ) \
- } \
- \
- namespace rule { \
- struct NAME \
- : expression:: NAME < \
+/**/
+
+#define PHOENIX_DEFINE_EXPRESSION_RULE_VARARG_EXT(N, GRAMMAR, D) \
+ struct BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(N)) \
+ : expression:: BOOST_PP_SEQ_HEAD(BOOST_PP_SEQ_REVERSE(N)) < \
                 BOOST_PP_IF( \
                     BOOST_PP_EQUAL(1, BOOST_PP_SEQ_SIZE(GRAMMAR)) \
                   , BOOST_PP_EMPTY() \
@@ -212,12 +265,6 @@
> \
> \
         {}; \
- } \
- \
- template <typename Dummy> \
- struct meta_grammar::case_<tag:: NAME, Dummy> \
- : proto::when<rule:: NAME, proto::external_transform> \
- {}; \
-/**/
+
 
 #endif

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/nothing.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/nothing.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/nothing.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,6 +12,12 @@
 #include <boost/phoenix/core/actor.hpp>
 #include <boost/phoenix/core/expression.hpp>
 
+
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(null)
+ , (proto::terminal<mpl::void_>::type)
+)
+
 namespace boost { namespace phoenix
 {
     /////////////////////////////////////////////////////////////////////////////
@@ -22,8 +28,6 @@
     //
     /////////////////////////////////////////////////////////////////////////////
     
- PHOENIX_DEFINE_EXPRESSION(null, (proto::terminal<mpl::void_>::type))
-
     struct null_eval
     {
         BOOST_PROTO_CALLABLE()

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/core/terminal.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/core/terminal.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/core/terminal.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -41,9 +41,9 @@
     template <typename Grammar>
     struct meta_grammar::case_<proto::tag::terminal, Grammar>
         : proto::or_<
- proto::when<rule::argument , proto::external_transform>
- , proto::when<rule::custom_terminal, proto::external_transform>
- , proto::when<rule::terminal , proto::external_transform>
+ enable_rule<rule::argument >
+ , enable_rule<rule::custom_terminal>
+ , enable_rule<rule::terminal >
>
     {};
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/function/function.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/function/function.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/function/function.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -63,7 +63,7 @@
 
     template <typename Dummy>
     struct meta_grammar::case_<proto::tag::function, Dummy>
- : proto::when<rule::function, proto::external_transform>
+ : enable_rule<rule::function>
     {};
 
     // functor which returns our lazy function call extension

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/fusion/at.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/fusion/at.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/fusion/at.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -14,15 +14,15 @@
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
 #include <boost/type_traits/remove_reference.hpp>
+
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(at_c)
+ , (proto::terminal<proto::_>)
+ (meta_grammar)
+)
 
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION(
- at_c
- , (proto::terminal<proto::_>)
- (meta_grammar)
- )
-
     template <typename Dummy>
     struct default_actions::when<rule::at_c, Dummy>
         : proto::call<

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/const_cast.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/const_cast.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/const_cast.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -14,14 +14,14 @@
 #include <boost/phoenix/object/detail/target.hpp>
 #include <boost/proto/transform/lazy.hpp>
 
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(const_cast_)
+ , (proto::terminal<detail::target<proto::_> >)
+ (meta_grammar)
+)
+
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION(
- const_cast_
- , (proto::terminal<detail::target<proto::_> >)
- (meta_grammar)
- )
-
     template <typename T>
     struct const_cast_eval
         : proto::callable

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/construct.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/construct.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/construct.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -14,15 +14,15 @@
 #include <boost/phoenix/object/detail/target.hpp>
 #include <boost/phoenix/support/iterate.hpp>
 
+PHOENIX_DEFINE_EXPRESSION_VARARG(
+ (boost)(phoenix)(construct)
+ , (proto::terminal<detail::target<proto::_> >)
+ (meta_grammar)
+ , PHOENIX_COMPOSITE_LIMIT
+)
+
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION_VARARG(
- construct
- , (proto::terminal<detail::target<proto::_> >)
- (meta_grammar)
- , PHOENIX_COMPOSITE_LIMIT
- )
-
     template <typename T>
     struct construct_eval
     {

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/delete.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/delete.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/delete.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -11,33 +11,15 @@
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
+#include <boost/phoenix/core/call.hpp>
+
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(delete_)
+ , (meta_grammar)
+)
 
 namespace boost { namespace phoenix
 {
- namespace tag {
- struct delete_ {};
- }
-
- namespace expression
- {
- template <typename T>
- struct delete_
- : expr<tag::delete_, T>
- {};
- }
-
- namespace rule
- {
- struct delete_
- : expression::delete_<meta_grammar>
- {};
- }
-
- template <typename Dummy>
- struct meta_grammar::case_<tag::delete_, Dummy>
- : proto::when<rule::delete_, proto::external_transform>
- {};
-
     struct delete_eval
         : proto::callable
     {
@@ -45,7 +27,7 @@
 
         template <typename Context, typename P>
         result_type
- operator()(Context& ctx, P const& p) const
+ operator()(Context const& ctx, P const& p) const
         {
             delete eval(p, ctx);
         }
@@ -53,7 +35,7 @@
 
     template <typename Dummy>
     struct default_actions::when<rule::delete_, Dummy>
- : proto::call<delete_eval(_context, proto::_child_c<0>)>
+ : call<delete_eval>
     {};
 
     template <typename P>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct_eval.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct_eval.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/construct_eval.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -1,4 +1,5 @@
 
+/*
 #if !defined(PHOENIX_DONT_USE_PREPROCESSED_FILES)
 #ifndef PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
 #define PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
@@ -7,16 +8,13 @@
 
 #endif
 #else
+*/
 
 #if !PHOENIX_IS_ITERATING
 
 #ifndef PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
 #define PHOENIX_OBJECT_DETAIL_CONSTRUCT_EVAL_HPP
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 2, line: 0, output: "preprocessed/construct_eval_" PHOENIX_LIMIT_STR ".hpp")
-#endif
-
 /*==============================================================================
     Copyright (c) 2005-2010 Joel de Guzman
     Copyright (c) 2010 Thomas Heller
@@ -25,10 +23,6 @@
     file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
 ==============================================================================*/
 
-#if defined(__WAVE__) && defined(PHOENIX_CREATE_PREPROCESSED_FILES)
-#pragma wave option(preserve: 1)
-#endif
-
 #define PHOENIX_ITERATION_PARAMS \
     (3, (1, PHOENIX_COMPOSITE_LIMIT, \
     <boost/phoenix/object/detail/construct_eval.hpp>))
@@ -55,4 +49,4 @@
 
 #endif
 
-#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES
+//#endif // PHOENIX_DONT_USE_PREPROCESSED_FILES

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new_eval.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new_eval.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/new_eval.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -30,7 +30,7 @@
 #endif
 
 #define PHOENIX_ITERATION_PARAMS \
- (3, (1, PHOENIX_COMPOSITE_LIMIT, \
+ (3, (2, PHOENIX_COMPOSITE_LIMIT, \
     <boost/phoenix/object/detail/new_eval.hpp>))
 #include PHOENIX_ITERATE()
 
@@ -42,16 +42,22 @@
 
 #else
 
+ template <typename This, typename Context, PHOENIX_typename_A>
+ struct result<This(Context, PHOENIX_A)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
+
         template <typename Context, PHOENIX_typename_A>
- result_type
- operator()(Context& ctx, PHOENIX_A_const_ref_a) const
+ typename result<new_eval(Context const &, PHOENIX_A_const_ref)>::type
+ operator()(Context const & ctx, PHOENIX_A_const_ref_a) const
         {
 #define EVAL_a(_,n,__) \
- BOOST_PP_COMMA_IF(n) eval(a ## n, ctx)
-
- return
- new construct_type(
- BOOST_PP_REPEAT(PHOENIX_ITERATION, EVAL_a, _)
+ BOOST_PP_COMMA_IF(BOOST_PP_DEC(n)) eval(a ## n, ctx)
+ return new typename result<new_eval(Context const &, PHOENIX_A_const_ref)>::construct_type(
+ BOOST_PP_REPEAT_FROM_TO(1, PHOENIX_ITERATION, EVAL_a, _)
                 );
 #undef EVAL_a
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_10.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,29 +12,19 @@
     
     
     
- template <typename Context, typename A0>
- result_type
- operator()(Context& ctx, A0 const& a0) const
- {
- return
- new construct_type(
- eval(a0, ctx)
- );
- }
-
-
-
-
-
-
-
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
+ typename result<new_eval(Context const &, A0 const& , A1 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const&)>::construct_type(
+ eval(a1, ctx)
                 );
         }
     
@@ -44,13 +34,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx)
                 );
         }
     
@@ -60,13 +56,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
                 );
         }
     
@@ -76,13 +78,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
     
@@ -92,13 +100,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
     
@@ -108,13 +122,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
     
@@ -124,13 +144,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
     
@@ -140,13 +166,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
     
@@ -156,12 +188,18 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_20.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,29 +12,19 @@
     
     
     
- template <typename Context, typename A0>
- result_type
- operator()(Context& ctx, A0 const& a0) const
- {
- return
- new construct_type(
- eval(a0, ctx)
- );
- }
-
-
-
-
-
-
-
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
+ typename result<new_eval(Context const &, A0 const& , A1 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const&)>::construct_type(
+ eval(a1, ctx)
                 );
         }
     
@@ -44,13 +34,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx)
                 );
         }
     
@@ -60,13 +56,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
                 );
         }
     
@@ -76,13 +78,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
     
@@ -92,13 +100,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
     
@@ -108,13 +122,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
     
@@ -124,13 +144,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
     
@@ -140,13 +166,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
     
@@ -156,13 +188,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
     
@@ -172,13 +210,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
                 );
         }
     
@@ -188,13 +232,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
                 );
         }
     
@@ -204,13 +254,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
                 );
         }
     
@@ -220,13 +276,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
                 );
         }
     
@@ -236,13 +298,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
                 );
         }
     
@@ -252,13 +320,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
                 );
         }
     
@@ -268,13 +342,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
                 );
         }
     
@@ -284,13 +364,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
                 );
         }
     
@@ -300,13 +386,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
                 );
         }
     
@@ -316,12 +408,18 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
                 );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_30.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,29 +12,19 @@
     
     
     
- template <typename Context, typename A0>
- result_type
- operator()(Context& ctx, A0 const& a0) const
- {
- return
- new construct_type(
- eval(a0, ctx)
- );
- }
-
-
-
-
-
-
-
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
+ typename result<new_eval(Context const &, A0 const& , A1 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const&)>::construct_type(
+ eval(a1, ctx)
                 );
         }
     
@@ -44,13 +34,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx)
                 );
         }
     
@@ -60,13 +56,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
                 );
         }
     
@@ -76,13 +78,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
     
@@ -92,13 +100,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
     
@@ -108,13 +122,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
     
@@ -124,13 +144,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
     
@@ -140,13 +166,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
     
@@ -156,13 +188,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
     
@@ -172,13 +210,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
                 );
         }
     
@@ -188,13 +232,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
                 );
         }
     
@@ -204,13 +254,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
                 );
         }
     
@@ -220,13 +276,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
                 );
         }
     
@@ -236,13 +298,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
                 );
         }
     
@@ -252,13 +320,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
                 );
         }
     
@@ -268,13 +342,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
                 );
         }
     
@@ -284,13 +364,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
                 );
         }
     
@@ -300,13 +386,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
                 );
         }
     
@@ -316,13 +408,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
                 );
         }
     
@@ -332,13 +430,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx)
                 );
         }
     
@@ -348,13 +452,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx)
                 );
         }
     
@@ -364,13 +474,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx)
                 );
         }
     
@@ -380,13 +496,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx)
                 );
         }
     
@@ -396,13 +518,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx)
                 );
         }
     
@@ -412,13 +540,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx)
                 );
         }
     
@@ -428,13 +562,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx)
                 );
         }
     
@@ -444,13 +584,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx)
                 );
         }
     
@@ -460,13 +606,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx)
                 );
         }
     
@@ -476,12 +628,18 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx)
                 );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/detail/preprocessed/new_eval_40.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,29 +12,19 @@
     
     
     
- template <typename Context, typename A0>
- result_type
- operator()(Context& ctx, A0 const& a0) const
- {
- return
- new construct_type(
- eval(a0, ctx)
- );
- }
-
-
-
-
-
-
-
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1) const
+ typename result<new_eval(Context const &, A0 const& , A1 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const&)>::construct_type(
+ eval(a1, ctx)
                 );
         }
     
@@ -44,13 +34,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx)
                 );
         }
     
@@ -60,13 +56,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx)
                 );
         }
     
@@ -76,13 +78,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
     
@@ -92,13 +100,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
     
@@ -108,13 +122,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
     
@@ -124,13 +144,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
     
@@ -140,13 +166,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
     
@@ -156,13 +188,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
     
@@ -172,13 +210,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
                 );
         }
     
@@ -188,13 +232,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
                 );
         }
     
@@ -204,13 +254,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
                 );
         }
     
@@ -220,13 +276,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
                 );
         }
     
@@ -236,13 +298,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
                 );
         }
     
@@ -252,13 +320,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
                 );
         }
     
@@ -268,13 +342,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
                 );
         }
     
@@ -284,13 +364,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
                 );
         }
     
@@ -300,13 +386,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
                 );
         }
     
@@ -316,13 +408,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
                 );
         }
     
@@ -332,13 +430,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx)
                 );
         }
     
@@ -348,13 +452,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx)
                 );
         }
     
@@ -364,13 +474,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx)
                 );
         }
     
@@ -380,13 +496,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx)
                 );
         }
     
@@ -396,13 +518,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx)
                 );
         }
     
@@ -412,13 +540,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx)
                 );
         }
     
@@ -428,13 +562,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx)
                 );
         }
     
@@ -444,13 +584,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx)
                 );
         }
     
@@ -460,13 +606,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx)
                 );
         }
     
@@ -476,13 +628,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx)
                 );
         }
     
@@ -492,13 +650,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx)
                 );
         }
     
@@ -508,13 +672,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx)
                 );
         }
     
@@ -524,13 +694,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx)
                 );
         }
     
@@ -540,13 +716,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx)
                 );
         }
     
@@ -556,13 +738,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx)
                 );
         }
     
@@ -572,13 +760,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx)
                 );
         }
     
@@ -588,13 +782,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx)
                 );
         }
     
@@ -604,13 +804,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const& , A37 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const& , A37 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx)
                 );
         }
     
@@ -620,13 +826,19 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const& , A37 const& , A38 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const& , A37 const& , A38 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx)
                 );
         }
     
@@ -636,12 +848,18 @@
     
     
     
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
         template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
- result_type
- operator()(Context& ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
+ typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const& , A37 const& , A38 const& , A39 const&)>::type
+ operator()(Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39) const
         {
- return
- new construct_type(
- eval(a0, ctx) , eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx)
+ return new typename result<new_eval(Context const &, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const& , A37 const& , A38 const& , A39 const&)>::construct_type(
+ eval(a1, ctx) , eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx)
                 );
         }

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/dynamic_cast.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/dynamic_cast.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/dynamic_cast.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -14,14 +14,14 @@
 #include <boost/phoenix/object/detail/target.hpp>
 #include <boost/proto/transform/lazy.hpp>
 
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(dynamic_cast_)
+ , (proto::terminal<detail::target<proto::_> >)
+ (meta_grammar)
+)
+
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION(
- dynamic_cast_
- , (proto::terminal<detail::target<proto::_> >)
- (meta_grammar)
- )
-
     template <typename T>
     struct dynamic_cast_eval
         : proto::callable

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/new.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/new.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/new.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -13,71 +13,48 @@
 #include <boost/phoenix/core/meta_grammar.hpp>
 #include <boost/phoenix/object/detail/target.hpp>
 #include <boost/phoenix/support/iterate.hpp>
+#include <boost/preprocessor/repetition/repeat_from_to.hpp>
+
+PHOENIX_DEFINE_EXPRESSION_VARARG(
+ (boost)(phoenix)(new_)
+ , (proto::terminal<detail::target<proto::_> >)
+ (meta_grammar)
+ , PHOENIX_COMPOSITE_LIMIT
+)
 
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION_VARARG(
- new_
- , (proto::terminal<detail::target<proto::_> >)
- (meta_grammar)
- , PHOENIX_COMPOSITE_LIMIT
- )
 
- template <typename T>
+ //template <typename T>
     struct new_eval
         : proto::callable
     {
- typedef typename T::type construct_type;
- typedef typename T::type* result_type;
+ template <typename Sig>
+ struct result;
 
- template <typename Context>
- result_type
- operator()(Context&) const
+ template <typename This, typename Context, typename A0>
+ struct result<This(Context, A0)>
+ {
+ typedef typename proto::detail::uncvref<typename proto::result_of::value<A0>::type>::type target_type;
+ typedef typename target_type::type construct_type;
+ typedef typename target_type::type * type;
+ };
+
+ template <typename Context, typename Target>
+ typename result<new_eval(Context const &, Target)>::type
+ operator()(Context const&, Target) const
         {
- return new construct_type;
+ return new typename result<new_eval(Context const &, Target)>::construct_type;
         }
 
         // Bring in the rest
         #include <boost/phoenix/object/detail/new_eval.hpp>
     };
 
-#define PHOENIX_NEW_CHILD(Z, N, D) proto::_child_c<N>
-#define PHOENIX_NEW_CALL(Z, N, D) \
- proto::when< \
- expression::new_< \
- proto::terminal<proto::_> \
- , BOOST_PP_ENUM_PARAMS(N, meta_grammar BOOST_PP_INTERCEPT) \
- > \
- , proto::lazy< \
- new_eval<proto::_value(proto::_child_c<0>)>( \
- _context \
- , BOOST_PP_ENUM_SHIFTED( \
- BOOST_PP_INC(N) \
- , PHOENIX_NEW_CHILD \
- , _ \
- ) \
- ) \
- > \
- > \
- /**/
-
     template <typename Dummy>
     struct default_actions::when<rule::new_, Dummy>
- : proto::or_<
- proto::when<
- expression::new_<proto::terminal<proto::_> >
- , proto::lazy<
- new_eval<
- proto::_value(proto::_child_c<0>)
- >(_context)
- >
- >
- , BOOST_PP_ENUM_SHIFTED(PHOENIX_COMPOSITE_LIMIT, PHOENIX_NEW_CALL, _)
- >
-
+ : call<new_eval>
     {};
-#undef PHOENIX_NEW_CHILD
-#undef PHOENIX_NEW_CALL
 
     template <typename T>
     typename expression::new_<detail::target<T> >::type const

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/reinterpret_cast.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/reinterpret_cast.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/reinterpret_cast.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -14,13 +14,14 @@
 #include <boost/phoenix/object/detail/target.hpp>
 #include <boost/proto/transform/lazy.hpp>
 
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(reinterpret_cast_)
+ , (proto::terminal<detail::target<proto::_> >)
+ (meta_grammar)
+)
+
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION(
- reinterpret_cast_
- , (proto::terminal<detail::target<proto::_> >)
- (meta_grammar)
- )
     
     template <typename T>
     struct reinterpret_cast_eval

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/object/static_cast.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/object/static_cast.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/object/static_cast.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -13,15 +13,15 @@
 #include <boost/phoenix/core/meta_grammar.hpp>
 #include <boost/phoenix/object/detail/target.hpp>
 #include <boost/proto/transform/lazy.hpp>
+
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(static_cast_)
+ , (proto::terminal<detail::target<proto::_> >)
+ (meta_grammar)
+)
 
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION(
- static_cast_
- , (proto::terminal<detail::target<proto::_> >)
- (meta_grammar)
- )
-
     template <typename T>
     struct static_cast_eval
         : proto::callable

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/define_operator.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/define_operator.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/define_operator.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -27,7 +27,7 @@
 #define PHOENIX_GRAMMAR(_, __, name) \
     template <typename Dummy> \
     struct meta_grammar::case_<proto::tag::name, Dummy> \
- : proto::when<rule::name, proto::external_transform> \
+ : enable_rule<rule::name> \
     {}; \
 /**/
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/detail/mem_fun_ptr_eval_result_of.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -14,7 +14,7 @@
             typedef \
                 typename \
                 evaluator::impl< \
- typename proto::result_of::child_c<Expr, N>::type \
+ BOOST_PP_CAT(A, N) \
                   , Context \
                   , int \
>::result_type \
@@ -32,8 +32,8 @@
 
 #else
 
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, PHOENIX_ITERATION>
+ template <typename Context, PHOENIX_typename_A>
+ struct mem_fun_ptr_eval<Context, PHOENIX_A>
         {
             BOOST_PP_REPEAT(PHOENIX_ITERATION, PHOENIX_MEM_FUN_PTR_EVAL_RESULT_OF_CHILD, _)
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/if_else.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/if_else.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/if_else.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -41,7 +41,7 @@
 
         template <typename Dummy>
         struct meta_grammar::case_<tag::if_else_operator, Dummy>
- : proto::when<rule::if_else_operator, proto::external_transform>
+ : enable_rule<rule::if_else_operator>
         {};
 
         using proto::if_else;

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/member.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/member.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/member.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -8,6 +8,7 @@
 #include <boost/phoenix/core/domain.hpp>
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
+#include <boost/phoenix/core/call.hpp>
 #include <boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp>
 #include <boost/phoenix/support/iterate.hpp>
 #include <boost/type_traits/is_member_function_pointer.hpp>
@@ -27,6 +28,7 @@
 #include <boost/phoenix/core/domain.hpp>
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
+#include <boost/phoenix/core/call.hpp>
 #include <boost/phoenix/operator/detail/mem_fun_ptr_gen.hpp>
 #include <boost/phoenix/support/iterate.hpp>
 #include <boost/type_traits/is_member_function_pointer.hpp>
@@ -49,14 +51,18 @@
 
 #include <boost/phoenix/operator/detail/define_operator.hpp>
 
+PHOENIX_DEFINE_EXPRESSION_VARARG(
+ (boost)(phoenix)(mem_fun_ptr)
+ , (meta_grammar)
+ , PHOENIX_LIMIT
+)
+
 namespace boost { namespace phoenix
 {
     PHOENIX_BINARY_OPERATORS(
         (mem_ptr)
     )
 
- PHOENIX_DEFINE_EXPRESSION_VARARG(mem_fun_ptr, (meta_grammar), PHOENIX_LIMIT)
-
     template <typename Object, typename MemPtr>
     typename enable_if<
         is_member_function_pointer<MemPtr>
@@ -71,8 +77,8 @@
     {
         template <
             typename Context
- , typename Expr
- , long Arity = proto::arity_of<Expr>::value
+ , PHOENIX_typename_A_void(PHOENIX_LIMIT)
+ , typename Dummy = void
>
         struct mem_fun_ptr_eval;
 
@@ -85,6 +91,7 @@
         template<typename Sig>
         struct result;
         
+ /*
         template <typename This, typename Context, typename Expr>
         struct result<This(Context, Expr const &)>
             : result<This(Context const &, Expr const &)>
@@ -106,12 +113,13 @@
                   , typename proto::arity_of<Expr>::type()
                 );
         }
+ */
 
     #define PHOENIX_MEMBER_EVAL(Z, N, D) \
         BOOST_PP_COMMA_IF(BOOST_PP_NOT(BOOST_PP_EQUAL(N, 2))) \
- eval(proto::child_c< N >(expr), ctx) \
+ eval(BOOST_PP_CAT(a, N), ctx) \
     /**/
- private:
+
     #define PHOENIX_ITERATION_PARAMS \
         (4, (2, PHOENIX_LIMIT, \
         <boost/phoenix/operator/member.hpp>, \
@@ -123,7 +131,8 @@
 
     template <typename Dummy>
     struct default_actions::when<rule::mem_fun_ptr, Dummy>
- : proto::call<mem_fun_ptr_eval(_context, proto::_)>
+ // : proto::call<mem_fun_ptr_eval(_context, proto::_)>
+ : call<mem_fun_ptr_eval>
     {};
 }}
 
@@ -136,19 +145,27 @@
 #endif
 
 #else // PHOENIX_IS_ITERATING
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<PHOENIX_ITERATION>
+
+ template <typename This, typename Context, PHOENIX_typename_A>
+ struct result<This(Context, PHOENIX_A)>
+ : result<This(Context, PHOENIX_A_const_ref)>
+ {};
+
+ template <typename This, typename Context, PHOENIX_typename_A>
+ struct result<This(Context, PHOENIX_A_ref)>
+ : result_of::mem_fun_ptr_eval<Context, PHOENIX_A>
+ {};
+
+ template <typename Context, PHOENIX_typename_A>
+ typename result_of::mem_fun_ptr_eval<Context, PHOENIX_A>::type
+ operator()(
+ Context const & ctx, PHOENIX_A_const_ref_a
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
                     BOOST_PP_REPEAT_FROM_TO(
                         2

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_10.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -5,10 +5,10 @@
     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)
 ==============================================================================*/
+namespace boost { namespace phoenix { namespace tag { struct mem_fun_ptr {}; } namespace expression { template < typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename Dummy = void > struct mem_fun_ptr; template < typename A0 > struct mem_fun_ptr< A0 > : expr< tag:: mem_fun_ptr , A0 > {}; template < typename A0 , typename A1 > struct mem_fun_ptr< A0 , A1 > : expr< tag:: mem_fun_ptr , A0 , A1 > {}; template < typename A0 , typename A1 , typename A2 > struct mem_fun_ptr< A0 , A1 , A2 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 > struct mem_fun_ptr< A0 , A1 , A2 , A3 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 > : expr< tag:: mem_fun_ptr , A0 , A1 ,
 A2 , A3 , A4 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > {}; } namespace rule { struct mem_f
un_ptr : expression:: mem_fun_ptr < proto::vararg< meta_grammar > > {}; } } } namespace boost { namespace phoenix { template <typename Dummy> struct meta_grammar::case_< boost :: phoenix :: tag:: mem_fun_ptr , Dummy > : enable_rule< boost :: phoenix :: rule:: mem_fun_ptr > {}; } }
 namespace boost { namespace phoenix
 {
- namespace rule { struct mem_ptr : proto::binary_expr<proto::tag::mem_ptr, proto::_, proto::_> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : proto::when<rule::mem_ptr, proto::external_transform> {};
- namespace tag { struct mem_fun_ptr {}; } namespace expression { template < typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename Dummy = void > struct mem_fun_ptr; template < typename A0 > struct mem_fun_ptr< A0 > : expr< tag:: mem_fun_ptr , A0 > {}; template < typename A0 , typename A1 > struct mem_fun_ptr< A0 , A1 > : expr< tag:: mem_fun_ptr , A0 , A1 > {}; template < typename A0 , typename A1 , typename A2 > struct mem_fun_ptr< A0 , A1 , A2 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 > struct mem_fun_ptr< A0 , A1 , A2 , A3 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 > {}; template < typ
ename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > {}; } namespace rule { struct mem_fun_ptr : expression:: mem_fun_ptr
< proto::vararg< meta_grammar > > {}; } template <typename Dummy> struct meta_grammar::case_<tag:: mem_fun_ptr, Dummy> : proto::when<rule:: mem_fun_ptr, proto::external_transform> {};
+ namespace rule { struct mem_ptr : proto::binary_expr<proto::tag::mem_ptr, proto::_, proto::_> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : enable_rule<rule::mem_ptr> {};
     template <typename Object, typename MemPtr>
     typename enable_if<
         is_member_function_pointer<MemPtr>
@@ -22,8 +22,8 @@
     {
         template <
             typename Context
- , typename Expr
- , long Arity = proto::arity_of<Expr>::value
+ , typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void
+ , typename Dummy = void
>
         struct mem_fun_ptr_eval;
     
@@ -33,10 +33,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 2>
+ template <typename Context, typename A0 , typename A1>
+ struct mem_fun_ptr_eval<Context, A0 , A1>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1;
             typedef
                 typename boost::result_of<
                     child1(
@@ -52,10 +52,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 3>
+ template <typename Context, typename A0 , typename A1 , typename A2>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2;
             typedef
                 typename boost::result_of<
                     child1(
@@ -71,10 +71,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3;
             typedef
                 typename boost::result_of<
                     child1(
@@ -90,10 +90,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4;
             typedef
                 typename boost::result_of<
                     child1(
@@ -109,10 +109,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5;
             typedef
                 typename boost::result_of<
                     child1(
@@ -128,10 +128,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6;
             typedef
                 typename boost::result_of<
                     child1(
@@ -147,10 +147,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7;
             typedef
                 typename boost::result_of<
                     child1(
@@ -166,10 +166,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8;
             typedef
                 typename boost::result_of<
                     child1(
@@ -185,10 +185,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9;
             typedef
                 typename boost::result_of<
                     child1(
@@ -204,26 +204,7 @@
         template<typename Sig>
         struct result;
         
- template <typename This, typename Context, typename Expr>
- struct result<This(Context, Expr const &)>
- : result<This(Context const &, Expr const &)>
- {};
- template <typename This, typename Context, typename Expr>
- struct result<This(Context &, Expr const &)>
- : result_of::mem_fun_ptr_eval<Context, Expr>
- {};
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- operator()(Context & ctx, Expr const & expr) const
- {
- return
- this->evaluate(
- ctx
- , expr
- , typename proto::arity_of<Expr>::type()
- );
- }
- private:
+
     
     
     
@@ -231,19 +212,24 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<2>
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ : result<This(Context, A0 const& , A1 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 & , A1 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1>
+ {};
+ template <typename Context, typename A0 , typename A1>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
                     
                 );
@@ -256,21 +242,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<3>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ : result<This(Context, A0 const& , A1 const& , A2 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 & , A1 & , A2 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx)
+ eval(a2, ctx)
                 );
         }
         
@@ -281,21 +272,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<4>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx)
                 );
         }
         
@@ -306,21 +302,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<5>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
         
@@ -331,21 +332,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<6>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
         
@@ -356,21 +362,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<7>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
         
@@ -381,21 +392,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<8>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
         
@@ -406,21 +422,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<9>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
         
@@ -431,27 +452,33 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<10>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
         
     };
     template <typename Dummy>
     struct default_actions::when<rule::mem_fun_ptr, Dummy>
- : proto::call<mem_fun_ptr_eval(_context, proto::_)>
+
+ : call<mem_fun_ptr_eval>
     {};
 }}

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_20.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -5,10 +5,10 @@
     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)
 ==============================================================================*/
+namespace boost { namespace phoenix { namespace tag { struct mem_fun_ptr {}; } namespace expression { template < typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void , typename Dummy = void > struct mem_fun_ptr; template < typename A0 > struct mem_fun_ptr< A0 > : expr< tag:: mem_fun_ptr , A0 > {}; template < typename A0 , typename A1 > struct mem_fun_ptr< A0 , A1 > : expr< tag:: mem_fun_ptr , A0 , A1 > {}; template < typename A0 , typename A1 , typename A2 > struct mem_fun_ptr< A0 , A1 , A2 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 > struct mem_fun_ptr< A0 , A1 , A2 ,
A3 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename
A5 , typename A6 , typename A7 , typename A8 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 > struct mem_fun_ptr<
A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typen
ame A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A1
2 , typename A13 , typename A14 , typename A15 , typename A16 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename
 A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > {}; } namespace rule { struct mem_fun_ptr : expression:: mem_fun_ptr < proto::vararg< meta_grammar > > {}; } } } namespace boost { namespace phoenix { template <typename Dummy> struct meta_grammar::case_< boost :: phoenix :: tag:: mem_fun_ptr , Dummy > : enable_rule< boost :: phoenix :: rule:: mem_fun_ptr > {}; } }
 namespace boost { namespace phoenix
 {
- namespace rule { struct mem_ptr : proto::binary_expr<proto::tag::mem_ptr, proto::_, proto::_> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : proto::when<rule::mem_ptr, proto::external_transform> {};
- namespace tag { struct mem_fun_ptr {}; } namespace expression { template < typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void , typename Dummy = void > struct mem_fun_ptr; template < typename A0 > struct mem_fun_ptr< A0 > : expr< tag:: mem_fun_ptr , A0 > {}; template < typename A0 , typename A1 > struct mem_fun_ptr< A0 , A1 > : expr< tag:: mem_fun_ptr , A0 , A1 > {}; template < typename A0 , typename A1 , typename A2 > struct mem_fun_ptr< A0 , A1 , A2 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 > struct mem_fun_ptr< A0 , A1 , A2 , A3 > : expr< tag:: mem_fun_ptr , A
0 , A1 , A2 , A3 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , t
ypename A8 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 ,
 A7 , A8 , A9 , A10 , A11 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 ,
typename A15 , typename A16 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15
 , typename A16 , typename A17 , typename A18 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > {}; } namespace rule { struct mem_fun_ptr : expression:: mem_fun_ptr < proto::vararg< meta_grammar > > {}; } template <typename Dummy> struct meta_grammar::case_<tag:: mem_fun_ptr, Dummy> : proto::when<rule:: mem_fun_ptr, proto::external_transform> {};
+ namespace rule { struct mem_ptr : proto::binary_expr<proto::tag::mem_ptr, proto::_, proto::_> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : enable_rule<rule::mem_ptr> {};
     template <typename Object, typename MemPtr>
     typename enable_if<
         is_member_function_pointer<MemPtr>
@@ -22,8 +22,8 @@
     {
         template <
             typename Context
- , typename Expr
- , long Arity = proto::arity_of<Expr>::value
+ , typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void
+ , typename Dummy = void
>
         struct mem_fun_ptr_eval;
     
@@ -33,10 +33,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 2>
+ template <typename Context, typename A0 , typename A1>
+ struct mem_fun_ptr_eval<Context, A0 , A1>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1;
             typedef
                 typename boost::result_of<
                     child1(
@@ -52,10 +52,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 3>
+ template <typename Context, typename A0 , typename A1 , typename A2>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2;
             typedef
                 typename boost::result_of<
                     child1(
@@ -71,10 +71,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3;
             typedef
                 typename boost::result_of<
                     child1(
@@ -90,10 +90,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4;
             typedef
                 typename boost::result_of<
                     child1(
@@ -109,10 +109,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5;
             typedef
                 typename boost::result_of<
                     child1(
@@ -128,10 +128,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6;
             typedef
                 typename boost::result_of<
                     child1(
@@ -147,10 +147,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7;
             typedef
                 typename boost::result_of<
                     child1(
@@ -166,10 +166,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8;
             typedef
                 typename boost::result_of<
                     child1(
@@ -185,10 +185,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9;
             typedef
                 typename boost::result_of<
                     child1(
@@ -204,10 +204,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10;
             typedef
                 typename boost::result_of<
                     child1(
@@ -223,10 +223,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11;
             typedef
                 typename boost::result_of<
                     child1(
@@ -242,10 +242,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12;
             typedef
                 typename boost::result_of<
                     child1(
@@ -261,10 +261,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13;
             typedef
                 typename boost::result_of<
                     child1(
@@ -280,10 +280,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14;
             typedef
                 typename boost::result_of<
                     child1(
@@ -299,10 +299,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15;
             typedef
                 typename boost::result_of<
                     child1(
@@ -318,10 +318,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16;
             typedef
                 typename boost::result_of<
                     child1(
@@ -337,10 +337,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17;
             typedef
                 typename boost::result_of<
                     child1(
@@ -356,10 +356,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18;
             typedef
                 typename boost::result_of<
                     child1(
@@ -375,10 +375,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 20>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19;
             typedef
                 typename boost::result_of<
                     child1(
@@ -394,26 +394,7 @@
         template<typename Sig>
         struct result;
         
- template <typename This, typename Context, typename Expr>
- struct result<This(Context, Expr const &)>
- : result<This(Context const &, Expr const &)>
- {};
- template <typename This, typename Context, typename Expr>
- struct result<This(Context &, Expr const &)>
- : result_of::mem_fun_ptr_eval<Context, Expr>
- {};
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- operator()(Context & ctx, Expr const & expr) const
- {
- return
- this->evaluate(
- ctx
- , expr
- , typename proto::arity_of<Expr>::type()
- );
- }
- private:
+
     
     
     
@@ -421,19 +402,24 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<2>
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ : result<This(Context, A0 const& , A1 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 & , A1 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1>
+ {};
+ template <typename Context, typename A0 , typename A1>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
                     
                 );
@@ -446,21 +432,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<3>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ : result<This(Context, A0 const& , A1 const& , A2 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 & , A1 & , A2 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx)
+ eval(a2, ctx)
                 );
         }
         
@@ -471,21 +462,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<4>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx)
                 );
         }
         
@@ -496,21 +492,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<5>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
         
@@ -521,21 +522,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<6>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
         
@@ -546,21 +552,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<7>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
         
@@ -571,21 +582,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<8>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
         
@@ -596,21 +612,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<9>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
         
@@ -621,21 +642,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<10>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
         
@@ -646,21 +672,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<11>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
                 );
         }
         
@@ -671,21 +702,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<12>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
                 );
         }
         
@@ -696,21 +732,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<13>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
                 );
         }
         
@@ -721,21 +762,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<14>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
                 );
         }
         
@@ -746,21 +792,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<15>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
                 );
         }
         
@@ -771,21 +822,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<16>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
                 );
         }
         
@@ -796,21 +852,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<17>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
                 );
         }
         
@@ -821,21 +882,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<18>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
                 );
         }
         
@@ -846,21 +912,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<19>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
                 );
         }
         
@@ -871,27 +942,33 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<20>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
                 );
         }
         
     };
     template <typename Dummy>
     struct default_actions::when<rule::mem_fun_ptr, Dummy>
- : proto::call<mem_fun_ptr_eval(_context, proto::_)>
+
+ : call<mem_fun_ptr_eval>
     {};
 }}

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_30.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -5,10 +5,10 @@
     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)
 ==============================================================================*/
+namespace boost { namespace phoenix { namespace tag { struct mem_fun_ptr {}; } namespace expression { template < typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void , typename A20 = void , typename A21 = void , typename A22 = void , typename A23 = void , typename A24 = void , typename A25 = void , typename A26 = void , typename A27 = void , typename A28 = void , typename A29 = void , typename Dummy = void > struct mem_fun_ptr; template < typename A0 > struct mem_fun_ptr< A0 > : expr< tag:: mem_fun_ptr , A0 > {}; template < typename A0 , typename A1 > struct mem_fun_ptr< A0 , A1 > : expr< tag:: mem_fun_ptr , A0 , A1 > {}; template < typena
me A0 , typename A1 , typename A2 > struct mem_fun_ptr< A0 , A1 , A2 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 > struct mem_fun_ptr< A0 , A1 , A2 , A3 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > st
ruct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A
8 , A9 , A10 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6
 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 ,
A12 , A13 , A14 , A15 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 ,
A16 , A17 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 > : expr< tag:: mem_fun_ptr , A0
 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A
20 , typename A21 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 > {}; template < typename A0 , typename A1 , typename A2 ,
typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 > struct mem_fun_ptr<
 A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
 , A23 , A24 , A25 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A
15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 > struct mem_fun_ptr< A0 , A1 , A2 ,
 A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 > {}; } namespace rule { struct mem_fun_ptr : expression:: mem_fun_ptr < proto::vararg< meta_grammar > > {}; } } } namespace boost { namespace phoenix { template <typename Dummy> struct meta_grammar::case_< boost :: phoenix :: tag:: mem_fun_ptr , Dummy > : enable_rule< boost :: phoenix :: rule:: mem_fun_ptr > {}; } }
 namespace boost { namespace phoenix
 {
- namespace rule { struct mem_ptr : proto::binary_expr<proto::tag::mem_ptr, proto::_, proto::_> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : proto::when<rule::mem_ptr, proto::external_transform> {};
- namespace tag { struct mem_fun_ptr {}; } namespace expression { template < typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void , typename A20 = void , typename A21 = void , typename A22 = void , typename A23 = void , typename A24 = void , typename A25 = void , typename A26 = void , typename A27 = void , typename A28 = void , typename A29 = void , typename Dummy = void > struct mem_fun_ptr; template < typename A0 > struct mem_fun_ptr< A0 > : expr< tag:: mem_fun_ptr , A0 > {}; template < typename A0 , typename A1 > struct mem_fun_ptr< A0 , A1 > : expr< tag:: mem_fun_ptr , A0 , A1 > {}; template < typename A0 , typename A1 , typename A2
> struct mem_fun_ptr< A0 , A1 , A2 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 > struct mem_fun_ptr< A0 , A1 , A2 , A3 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > struct mem_fun_ptr< A0 , A1 , A2 , A
3 , A4 , A5 , A6 , A7 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > {}; template < type
name A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
, A13 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > {}; templa
te < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > {}; template < typenam
e A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A
7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 > struct mem_fun
_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typena
me A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6
, A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 > {}; template
< typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 ,
 typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
, A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 > {}; } namespace rule { struct mem_fun_ptr : expression:: mem_fun_ptr < proto::vararg< meta_grammar > > {}; } template <typename Dummy> struct meta_grammar::case_<tag:: mem_fun_ptr, Dummy> : proto::when<rule:: mem_fun_ptr, proto::external_transform> {};
+ namespace rule { struct mem_ptr : proto::binary_expr<proto::tag::mem_ptr, proto::_, proto::_> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : enable_rule<rule::mem_ptr> {};
     template <typename Object, typename MemPtr>
     typename enable_if<
         is_member_function_pointer<MemPtr>
@@ -22,8 +22,8 @@
     {
         template <
             typename Context
- , typename Expr
- , long Arity = proto::arity_of<Expr>::value
+ , typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void , typename A20 = void , typename A21 = void , typename A22 = void , typename A23 = void , typename A24 = void , typename A25 = void , typename A26 = void , typename A27 = void , typename A28 = void , typename A29 = void
+ , typename Dummy = void
>
         struct mem_fun_ptr_eval;
     
@@ -33,10 +33,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 2>
+ template <typename Context, typename A0 , typename A1>
+ struct mem_fun_ptr_eval<Context, A0 , A1>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1;
             typedef
                 typename boost::result_of<
                     child1(
@@ -52,10 +52,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 3>
+ template <typename Context, typename A0 , typename A1 , typename A2>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2;
             typedef
                 typename boost::result_of<
                     child1(
@@ -71,10 +71,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3;
             typedef
                 typename boost::result_of<
                     child1(
@@ -90,10 +90,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4;
             typedef
                 typename boost::result_of<
                     child1(
@@ -109,10 +109,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5;
             typedef
                 typename boost::result_of<
                     child1(
@@ -128,10 +128,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6;
             typedef
                 typename boost::result_of<
                     child1(
@@ -147,10 +147,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7;
             typedef
                 typename boost::result_of<
                     child1(
@@ -166,10 +166,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8;
             typedef
                 typename boost::result_of<
                     child1(
@@ -185,10 +185,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9;
             typedef
                 typename boost::result_of<
                     child1(
@@ -204,10 +204,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10;
             typedef
                 typename boost::result_of<
                     child1(
@@ -223,10 +223,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11;
             typedef
                 typename boost::result_of<
                     child1(
@@ -242,10 +242,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12;
             typedef
                 typename boost::result_of<
                     child1(
@@ -261,10 +261,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13;
             typedef
                 typename boost::result_of<
                     child1(
@@ -280,10 +280,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14;
             typedef
                 typename boost::result_of<
                     child1(
@@ -299,10 +299,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15;
             typedef
                 typename boost::result_of<
                     child1(
@@ -318,10 +318,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16;
             typedef
                 typename boost::result_of<
                     child1(
@@ -337,10 +337,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17;
             typedef
                 typename boost::result_of<
                     child1(
@@ -356,10 +356,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18;
             typedef
                 typename boost::result_of<
                     child1(
@@ -375,10 +375,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 20>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19;
             typedef
                 typename boost::result_of<
                     child1(
@@ -394,10 +394,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 21>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20;
             typedef
                 typename boost::result_of<
                     child1(
@@ -413,10 +413,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 22>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21;
             typedef
                 typename boost::result_of<
                     child1(
@@ -432,10 +432,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 23>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22;
             typedef
                 typename boost::result_of<
                     child1(
@@ -451,10 +451,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 24>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23;
             typedef
                 typename boost::result_of<
                     child1(
@@ -470,10 +470,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 25>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24;
             typedef
                 typename boost::result_of<
                     child1(
@@ -489,10 +489,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 26>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25;
             typedef
                 typename boost::result_of<
                     child1(
@@ -508,10 +508,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 27>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26;
             typedef
                 typename boost::result_of<
                     child1(
@@ -527,10 +527,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 28>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27;
             typedef
                 typename boost::result_of<
                     child1(
@@ -546,10 +546,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 29>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28;
             typedef
                 typename boost::result_of<
                     child1(
@@ -565,10 +565,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 30>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29;
             typedef
                 typename boost::result_of<
                     child1(
@@ -584,26 +584,7 @@
         template<typename Sig>
         struct result;
         
- template <typename This, typename Context, typename Expr>
- struct result<This(Context, Expr const &)>
- : result<This(Context const &, Expr const &)>
- {};
- template <typename This, typename Context, typename Expr>
- struct result<This(Context &, Expr const &)>
- : result_of::mem_fun_ptr_eval<Context, Expr>
- {};
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- operator()(Context & ctx, Expr const & expr) const
- {
- return
- this->evaluate(
- ctx
- , expr
- , typename proto::arity_of<Expr>::type()
- );
- }
- private:
+
     
     
     
@@ -611,19 +592,24 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<2>
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ : result<This(Context, A0 const& , A1 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 & , A1 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1>
+ {};
+ template <typename Context, typename A0 , typename A1>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
                     
                 );
@@ -636,21 +622,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<3>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ : result<This(Context, A0 const& , A1 const& , A2 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 & , A1 & , A2 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx)
+ eval(a2, ctx)
                 );
         }
         
@@ -661,21 +652,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<4>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx)
                 );
         }
         
@@ -686,21 +682,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<5>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
         
@@ -711,21 +712,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<6>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
         
@@ -736,21 +742,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<7>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
         
@@ -761,21 +772,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<8>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
         
@@ -786,21 +802,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<9>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
         
@@ -811,21 +832,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<10>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
         
@@ -836,21 +862,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<11>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
                 );
         }
         
@@ -861,21 +892,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<12>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
                 );
         }
         
@@ -886,21 +922,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<13>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
                 );
         }
         
@@ -911,21 +952,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<14>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
                 );
         }
         
@@ -936,21 +982,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<15>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
                 );
         }
         
@@ -961,21 +1012,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<16>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
                 );
         }
         
@@ -986,21 +1042,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<17>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
                 );
         }
         
@@ -1011,21 +1072,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<18>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
                 );
         }
         
@@ -1036,21 +1102,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<19>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
                 );
         }
         
@@ -1061,21 +1132,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<20>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
                 );
         }
         
@@ -1086,21 +1162,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<21>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx)
                 );
         }
         
@@ -1111,21 +1192,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<22>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx)
                 );
         }
         
@@ -1136,21 +1222,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<23>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx)
                 );
         }
         
@@ -1161,21 +1252,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<24>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx)
                 );
         }
         
@@ -1186,21 +1282,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<25>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx)
                 );
         }
         
@@ -1211,21 +1312,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<26>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx)
                 );
         }
         
@@ -1236,21 +1342,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<27>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx)
                 );
         }
         
@@ -1261,21 +1372,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<28>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx)
                 );
         }
         
@@ -1286,21 +1402,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<29>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx)
                 );
         }
         
@@ -1311,27 +1432,33 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<30>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx)
                 );
         }
         
     };
     template <typename Dummy>
     struct default_actions::when<rule::mem_fun_ptr, Dummy>
- : proto::call<mem_fun_ptr_eval(_context, proto::_)>
+
+ : call<mem_fun_ptr_eval>
     {};
 }}

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/operator/preprocessed/member_40.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -5,10 +5,10 @@
     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)
 ==============================================================================*/
+namespace boost { namespace phoenix { namespace tag { struct mem_fun_ptr {}; } namespace expression { template < typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void , typename A20 = void , typename A21 = void , typename A22 = void , typename A23 = void , typename A24 = void , typename A25 = void , typename A26 = void , typename A27 = void , typename A28 = void , typename A29 = void , typename A30 = void , typename A31 = void , typename A32 = void , typename A33 = void , typename A34 = void , typename A35 = void , typename A36 = void , typename A37 = void , typename A38 = void , typename A39 = void , typename Dummy = void > struct mem_fun_
ptr; template < typename A0 > struct mem_fun_ptr< A0 > : expr< tag:: mem_fun_ptr , A0 > {}; template < typename A0 , typename A1 > struct mem_fun_ptr< A0 , A1 > : expr< tag:: mem_fun_ptr , A0 , A1 > {}; template < typename A0 , typename A1 , typename A2 > struct mem_fun_ptr< A0 , A1 , A2 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 > struct mem_fun_ptr< A0 , A1 , A2 , A3 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > struct mem_fun_ptr< A0 , A1
 , A2 , A3 , A4 , A5 , A6 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A
5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > {}; template < typename A0 , typename A1 , type
name A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typena
me A14 , typename A15 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 > struct mem_f
un_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 ,
typename A16 , typename A17 , typename A18 , typename A19 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A
5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 ,
 A22 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename
A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 ,
 A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 > {}; template < typen
ame A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename
A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 > struct
 mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 ,
 A27 , A28 , A29 , A30 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 ,
 A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A3
2 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 > {}; template < typename A0 , typename A1 , typename A2 , typename A3
 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 ,
typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , type
name A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename
A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , t
ypename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 > {}; } namespace rule {
struct mem_fun_ptr : expression:: mem_fun_ptr < proto::vararg< meta_grammar > > {}; } } } namespace boost { namespace phoenix { template <typename Dummy> struct meta_grammar::case_< boost :: phoenix :: tag:: mem_fun_ptr , Dummy > : enable_rule< boost :: phoenix :: rule:: mem_fun_ptr > {}; } }
 namespace boost { namespace phoenix
 {
- namespace rule { struct mem_ptr : proto::binary_expr<proto::tag::mem_ptr, proto::_, proto::_> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : proto::when<rule::mem_ptr, proto::external_transform> {};
- namespace tag { struct mem_fun_ptr {}; } namespace expression { template < typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void , typename A20 = void , typename A21 = void , typename A22 = void , typename A23 = void , typename A24 = void , typename A25 = void , typename A26 = void , typename A27 = void , typename A28 = void , typename A29 = void , typename A30 = void , typename A31 = void , typename A32 = void , typename A33 = void , typename A34 = void , typename A35 = void , typename A36 = void , typename A37 = void , typename A38 = void , typename A39 = void , typename Dummy = void > struct mem_fun_ptr; template < typename A0 > stru
ct mem_fun_ptr< A0 > : expr< tag:: mem_fun_ptr , A0 > {}; template < typename A0 , typename A1 > struct mem_fun_ptr< A0 , A1 > : expr< tag:: mem_fun_ptr , A0 , A1 > {}; template < typename A0 , typename A1 , typename A2 > struct mem_fun_ptr< A0 , A1 , A2 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 > struct mem_fun_ptr< A0 , A1 , A2 , A3 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 > : expr
< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , ty
pename A8 , typename A9 , typename A10 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A
4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 > struct mem
_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A
5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , type
name A18 , typename A19 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , ty
pename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 > : expr< tag:: mem_fun_ptr ,
 A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13
, typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
 , A21 , A22 , A23 , A24 , A25 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 > {}; template < typename A0 , typename A1 , typename A2
 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18
, typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 > struct mem_fun_ptr< A0 , A1 , A2 , A3 ,
A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 > : expr< t
ag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 > {}; template < typename A0 , t
ypename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typ
ename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typena
me A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A
10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , t
ypename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 > {}; template < typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typenam
e A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 > struct mem_fun_ptr< A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 > : expr< tag:: mem_fun_ptr , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 > {}; } namespace rule { struct mem_fun_ptr : expression::
mem_fun_ptr < proto::vararg< meta_grammar > > {}; } template <typename Dummy> struct meta_grammar::case_<tag:: mem_fun_ptr, Dummy> : proto::when<rule:: mem_fun_ptr, proto::external_transform> {};
+ namespace rule { struct mem_ptr : proto::binary_expr<proto::tag::mem_ptr, proto::_, proto::_> {}; } template <typename Dummy> struct meta_grammar::case_<proto::tag::mem_ptr, Dummy> : enable_rule<rule::mem_ptr> {};
     template <typename Object, typename MemPtr>
     typename enable_if<
         is_member_function_pointer<MemPtr>
@@ -22,8 +22,8 @@
     {
         template <
             typename Context
- , typename Expr
- , long Arity = proto::arity_of<Expr>::value
+ , typename A0 = void , typename A1 = void , typename A2 = void , typename A3 = void , typename A4 = void , typename A5 = void , typename A6 = void , typename A7 = void , typename A8 = void , typename A9 = void , typename A10 = void , typename A11 = void , typename A12 = void , typename A13 = void , typename A14 = void , typename A15 = void , typename A16 = void , typename A17 = void , typename A18 = void , typename A19 = void , typename A20 = void , typename A21 = void , typename A22 = void , typename A23 = void , typename A24 = void , typename A25 = void , typename A26 = void , typename A27 = void , typename A28 = void , typename A29 = void , typename A30 = void , typename A31 = void , typename A32 = void , typename A33 = void , typename A34 = void , typename A35 = void , typename A36 = void , typename A37 = void , typename A38 = void , typename A39 = void
+ , typename Dummy = void
>
         struct mem_fun_ptr_eval;
     
@@ -33,10 +33,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 2>
+ template <typename Context, typename A0 , typename A1>
+ struct mem_fun_ptr_eval<Context, A0 , A1>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1;
             typedef
                 typename boost::result_of<
                     child1(
@@ -52,10 +52,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 3>
+ template <typename Context, typename A0 , typename A1 , typename A2>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2;
             typedef
                 typename boost::result_of<
                     child1(
@@ -71,10 +71,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 4>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3;
             typedef
                 typename boost::result_of<
                     child1(
@@ -90,10 +90,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 5>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4;
             typedef
                 typename boost::result_of<
                     child1(
@@ -109,10 +109,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 6>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5;
             typedef
                 typename boost::result_of<
                     child1(
@@ -128,10 +128,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 7>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6;
             typedef
                 typename boost::result_of<
                     child1(
@@ -147,10 +147,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 8>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7;
             typedef
                 typename boost::result_of<
                     child1(
@@ -166,10 +166,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 9>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8;
             typedef
                 typename boost::result_of<
                     child1(
@@ -185,10 +185,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 10>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9;
             typedef
                 typename boost::result_of<
                     child1(
@@ -204,10 +204,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 11>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10;
             typedef
                 typename boost::result_of<
                     child1(
@@ -223,10 +223,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 12>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11;
             typedef
                 typename boost::result_of<
                     child1(
@@ -242,10 +242,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 13>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12;
             typedef
                 typename boost::result_of<
                     child1(
@@ -261,10 +261,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 14>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13;
             typedef
                 typename boost::result_of<
                     child1(
@@ -280,10 +280,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 15>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14;
             typedef
                 typename boost::result_of<
                     child1(
@@ -299,10 +299,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 16>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15;
             typedef
                 typename boost::result_of<
                     child1(
@@ -318,10 +318,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 17>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16;
             typedef
                 typename boost::result_of<
                     child1(
@@ -337,10 +337,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 18>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17;
             typedef
                 typename boost::result_of<
                     child1(
@@ -356,10 +356,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 19>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18;
             typedef
                 typename boost::result_of<
                     child1(
@@ -375,10 +375,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 20>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19;
             typedef
                 typename boost::result_of<
                     child1(
@@ -394,10 +394,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 21>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20;
             typedef
                 typename boost::result_of<
                     child1(
@@ -413,10 +413,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 22>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21;
             typedef
                 typename boost::result_of<
                     child1(
@@ -432,10 +432,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 23>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22;
             typedef
                 typename boost::result_of<
                     child1(
@@ -451,10 +451,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 24>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23;
             typedef
                 typename boost::result_of<
                     child1(
@@ -470,10 +470,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 25>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24;
             typedef
                 typename boost::result_of<
                     child1(
@@ -489,10 +489,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 26>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25;
             typedef
                 typename boost::result_of<
                     child1(
@@ -508,10 +508,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 27>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26;
             typedef
                 typename boost::result_of<
                     child1(
@@ -527,10 +527,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 28>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27;
             typedef
                 typename boost::result_of<
                     child1(
@@ -546,10 +546,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 29>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28;
             typedef
                 typename boost::result_of<
                     child1(
@@ -565,10 +565,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 30>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29;
             typedef
                 typename boost::result_of<
                     child1(
@@ -584,10 +584,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 31>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29; typedef typename evaluator::impl< A30 , Context , int >::result_type child30;
             typedef
                 typename boost::result_of<
                     child1(
@@ -603,10 +603,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 32>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29; typedef typename evaluator::impl< A30 , Context , int >::result_type child30; typedef typename evaluator::impl< A31 , Context , int >::result_type child31;
             typedef
                 typename boost::result_of<
                     child1(
@@ -622,10 +622,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 33>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29; typedef typename evaluator::impl< A30 , Context , int >::result_type child30; typedef typename evaluator::impl< A31 , Context , int >::result_type child31; typedef typename evaluator::impl< A32 , Context , int >::result_type child32;
             typedef
                 typename boost::result_of<
                     child1(
@@ -641,10 +641,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 34>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29; typedef typename evaluator::impl< A30 , Context , int >::result_type child30; typedef typename evaluator::impl< A31 , Context , int >::result_type child31; typedef typename evaluator::impl< A32 , Context , int >::result_type child32; typedef typename evaluator::impl< A33 , Context , int >::result_type child33;
             typedef
                 typename boost::result_of<
                     child1(
@@ -660,10 +660,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 35>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29; typedef typename evaluator::impl< A30 , Context , int >::result_type child30; typedef typename evaluator::impl< A31 , Context , int >::result_type child31; typedef typename evaluator::impl< A32 , Context , int >::result_type child32; typedef typename evaluator::impl< A33 , Context , int >::result_type child33; typedef typename evaluator::impl< A34 , Context , int >::result_type child34;
             typedef
                 typename boost::result_of<
                     child1(
@@ -679,10 +679,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 36>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29; typedef typename evaluator::impl< A30 , Context , int >::result_type child30; typedef typename evaluator::impl< A31 , Context , int >::result_type child31; typedef typename evaluator::impl< A32 , Context , int >::result_type child32; typedef typename evaluator::impl< A33 , Context , int >::result_type child33; typedef typename evaluator::impl< A34 , Context , int >::result_type child34; typedef typename evaluator::impl< A35 , Context , int >::result_type child35;
             typedef
                 typename boost::result_of<
                     child1(
@@ -698,10 +698,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 37>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29; typedef typename evaluator::impl< A30 , Context , int >::result_type child30; typedef typename evaluator::impl< A31 , Context , int >::result_type child31; typedef typename evaluator::impl< A32 , Context , int >::result_type child32; typedef typename evaluator::impl< A33 , Context , int >::result_type child33; typedef typename evaluator::impl< A34 , Context , int >::result_type child34; typedef typename evaluator::impl< A35 , Context , int >::result_type child35; typedef typename evaluator::impl< A36 , Context , int >::result_type child36;
             typedef
                 typename boost::result_of<
                     child1(
@@ -717,10 +717,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 38>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29; typedef typename evaluator::impl< A30 , Context , int >::result_type child30; typedef typename evaluator::impl< A31 , Context , int >::result_type child31; typedef typename evaluator::impl< A32 , Context , int >::result_type child32; typedef typename evaluator::impl< A33 , Context , int >::result_type child33; typedef typename evaluator::impl< A34 , Context , int >::result_type child34; typedef typename evaluator::impl< A35 , Context , int >::result_type child35; typedef typename evaluator::impl< A36 , Context , int >::result_type child36; typedef typename evaluator::impl< A37 , Context , int >::result_type child37;
             typedef
                 typename boost::result_of<
                     child1(
@@ -736,10 +736,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 39>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29; typedef typename evaluator::impl< A30 , Context , int >::result_type child30; typedef typename evaluator::impl< A31 , Context , int >::result_type child31; typedef typename evaluator::impl< A32 , Context , int >::result_type child32; typedef typename evaluator::impl< A33 , Context , int >::result_type child33; typedef typename evaluator::impl< A34 , Context , int >::result_type child34; typedef typename evaluator::impl< A35 , Context , int >::result_type child35; typedef typename evaluator::impl< A36 , Context , int >::result_type child36; typedef typename evaluator::impl< A37 , Context , int >::result_type child37; typedef typename evaluator::impl< A38 , Context , int >::result_type child38;
             typedef
                 typename boost::result_of<
                     child1(
@@ -755,10 +755,10 @@
     
     
     
- template <typename Context, typename Expr>
- struct mem_fun_ptr_eval<Context, Expr, 40>
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ struct mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39>
         {
- typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 0>::type , Context , int >::result_type child0; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 1>::type , Context , int >::result_type child1; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2>::type , Context , int >::result_type child2; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 3>::type , Context , int >::result_type child3; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 4>::type , Context , int >::result_type child4; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 5>::type , Context , int >::result_type child5; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 6>::type , Context , int >::result_type child6; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 7>::type , Context , int >::result_type child7; typedef typename evaluator
::impl< typename proto::result_of::child_c<Expr, 8>::type , Context , int >::result_type child8; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 9>::type , Context , int >::result_type child9; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 10>::type , Context , int >::result_type child10; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 11>::type , Context , int >::result_type child11; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 12>::type , Context , int >::result_type child12; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 13>::type , Context , int >::result_type child13; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 14>::type , Context , int >::result_type child14; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 15>::type , Context , int >::result_type child15; typedef typename evaluator::impl< typename proto::res
ult_of::child_c<Expr, 16>::type , Context , int >::result_type child16; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 17>::type , Context , int >::result_type child17; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 18>::type , Context , int >::result_type child18; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 19>::type , Context , int >::result_type child19; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 20>::type , Context , int >::result_type child20; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 21>::type , Context , int >::result_type child21; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 22>::type , Context , int >::result_type child22; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 23>::type , Context , int >::result_type child23; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 2
4>::type , Context , int >::result_type child24; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 25>::type , Context , int >::result_type child25; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 26>::type , Context , int >::result_type child26; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 27>::type , Context , int >::result_type child27; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 28>::type , Context , int >::result_type child28; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 29>::type , Context , int >::result_type child29; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 30>::type , Context , int >::result_type child30; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 31>::type , Context , int >::result_type child31; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 32>::type , Context , in
t >::result_type child32; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 33>::type , Context , int >::result_type child33; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 34>::type , Context , int >::result_type child34; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 35>::type , Context , int >::result_type child35; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 36>::type , Context , int >::result_type child36; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 37>::type , Context , int >::result_type child37; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 38>::type , Context , int >::result_type child38; typedef typename evaluator::impl< typename proto::result_of::child_c<Expr, 39>::type , Context , int >::result_type child39;
+ typedef typename evaluator::impl< A0 , Context , int >::result_type child0; typedef typename evaluator::impl< A1 , Context , int >::result_type child1; typedef typename evaluator::impl< A2 , Context , int >::result_type child2; typedef typename evaluator::impl< A3 , Context , int >::result_type child3; typedef typename evaluator::impl< A4 , Context , int >::result_type child4; typedef typename evaluator::impl< A5 , Context , int >::result_type child5; typedef typename evaluator::impl< A6 , Context , int >::result_type child6; typedef typename evaluator::impl< A7 , Context , int >::result_type child7; typedef typename evaluator::impl< A8 , Context , int >::result_type child8; typedef typename evaluator::impl< A9 , Context , int >::result_type child9; typedef typename evaluator::impl< A10 , Context , int >::result_type child10; typedef typename evaluator::impl< A11 , Context , int >::result_type child11; typedef typename evaluator::impl< A12 , Context , int >::result_type child12; typedef typename
 evaluator::impl< A13 , Context , int >::result_type child13; typedef typename evaluator::impl< A14 , Context , int >::result_type child14; typedef typename evaluator::impl< A15 , Context , int >::result_type child15; typedef typename evaluator::impl< A16 , Context , int >::result_type child16; typedef typename evaluator::impl< A17 , Context , int >::result_type child17; typedef typename evaluator::impl< A18 , Context , int >::result_type child18; typedef typename evaluator::impl< A19 , Context , int >::result_type child19; typedef typename evaluator::impl< A20 , Context , int >::result_type child20; typedef typename evaluator::impl< A21 , Context , int >::result_type child21; typedef typename evaluator::impl< A22 , Context , int >::result_type child22; typedef typename evaluator::impl< A23 , Context , int >::result_type child23; typedef typename evaluator::impl< A24 , Context , int >::result_type child24; typedef typename evaluator::impl< A25 , Context , int >::result_type child25; typedef typename evaluato
r::impl< A26 , Context , int >::result_type child26; typedef typename evaluator::impl< A27 , Context , int >::result_type child27; typedef typename evaluator::impl< A28 , Context , int >::result_type child28; typedef typename evaluator::impl< A29 , Context , int >::result_type child29; typedef typename evaluator::impl< A30 , Context , int >::result_type child30; typedef typename evaluator::impl< A31 , Context , int >::result_type child31; typedef typename evaluator::impl< A32 , Context , int >::result_type child32; typedef typename evaluator::impl< A33 , Context , int >::result_type child33; typedef typename evaluator::impl< A34 , Context , int >::result_type child34; typedef typename evaluator::impl< A35 , Context , int >::result_type child35; typedef typename evaluator::impl< A36 , Context , int >::result_type child36; typedef typename evaluator::impl< A37 , Context , int >::result_type child37; typedef typename evaluator::impl< A38 , Context , int >::result_type child38; typedef typename evaluator::impl<
A39 , Context , int >::result_type child39;
             typedef
                 typename boost::result_of<
                     child1(
@@ -774,26 +774,7 @@
         template<typename Sig>
         struct result;
         
- template <typename This, typename Context, typename Expr>
- struct result<This(Context, Expr const &)>
- : result<This(Context const &, Expr const &)>
- {};
- template <typename This, typename Context, typename Expr>
- struct result<This(Context &, Expr const &)>
- : result_of::mem_fun_ptr_eval<Context, Expr>
- {};
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- operator()(Context & ctx, Expr const & expr) const
- {
- return
- this->evaluate(
- ctx
- , expr
- , typename proto::arity_of<Expr>::type()
- );
- }
- private:
+
     
     
     
@@ -801,19 +782,24 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<2>
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 , A1)>
+ : result<This(Context, A0 const& , A1 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1>
+ struct result<This(Context, A0 & , A1 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1>
+ {};
+ template <typename Context, typename A0 , typename A1>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
                     
                 );
@@ -826,21 +812,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<3>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 , A1 , A2)>
+ : result<This(Context, A0 const& , A1 const& , A2 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2>
+ struct result<This(Context, A0 & , A1 & , A2 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx)
+ eval(a2, ctx)
                 );
         }
         
@@ -851,21 +842,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<4>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 , A1 , A2 , A3)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx)
                 );
         }
         
@@ -876,21 +872,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<5>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx)
                 );
         }
         
@@ -901,21 +902,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<6>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx)
                 );
         }
         
@@ -926,21 +932,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<7>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx)
                 );
         }
         
@@ -951,21 +962,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<8>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx)
                 );
         }
         
@@ -976,21 +992,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<9>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx)
                 );
         }
         
@@ -1001,21 +1022,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<10>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx)
                 );
         }
         
@@ -1026,21 +1052,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<11>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx)
                 );
         }
         
@@ -1051,21 +1082,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<12>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx)
                 );
         }
         
@@ -1076,21 +1112,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<13>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx)
                 );
         }
         
@@ -1101,21 +1142,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<14>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx)
                 );
         }
         
@@ -1126,21 +1172,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<15>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx)
                 );
         }
         
@@ -1151,21 +1202,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<16>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx)
                 );
         }
         
@@ -1176,21 +1232,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<17>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx)
                 );
         }
         
@@ -1201,21 +1262,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<18>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx)
                 );
         }
         
@@ -1226,21 +1292,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<19>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx)
                 );
         }
         
@@ -1251,21 +1322,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<20>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx)
                 );
         }
         
@@ -1276,21 +1352,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<21>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx)
                 );
         }
         
@@ -1301,21 +1382,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<22>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx)
                 );
         }
         
@@ -1326,21 +1412,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<23>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx)
                 );
         }
         
@@ -1351,21 +1442,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<24>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx)
                 );
         }
         
@@ -1376,21 +1472,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<25>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx)
                 );
         }
         
@@ -1401,21 +1502,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<26>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx)
                 );
         }
         
@@ -1426,21 +1532,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<27>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx)
                 );
         }
         
@@ -1451,21 +1562,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<28>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx)
                 );
         }
         
@@ -1476,21 +1592,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<29>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx)
                 );
         }
         
@@ -1501,21 +1622,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<30>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx)
                 );
         }
         
@@ -1526,21 +1652,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<31>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 & , A30 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx)
                 );
         }
         
@@ -1551,21 +1682,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<32>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 & , A30 & , A31 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx)
                 );
         }
         
@@ -1576,21 +1712,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<33>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 & , A30 & , A31 & , A32 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx)
                 );
         }
         
@@ -1601,21 +1742,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<34>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 & , A30 & , A31 & , A32 & , A33 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx)
                 );
         }
         
@@ -1626,21 +1772,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<35>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 & , A30 & , A31 & , A32 & , A33 & , A34 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx)
                 );
         }
         
@@ -1651,21 +1802,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<36>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 & , A30 & , A31 & , A32 & , A33 & , A34 & , A35 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx)
                 );
         }
         
@@ -1676,21 +1832,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<37>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 & , A30 & , A31 & , A32 & , A33 & , A34 & , A35 & , A36 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx)
                 );
         }
         
@@ -1701,21 +1862,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<38>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const& , A37 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 & , A30 & , A31 & , A32 & , A33 & , A34 & , A35 & , A36 & , A37 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx)
                 );
         }
         
@@ -1726,21 +1892,26 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<39>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const& , A37 const& , A38 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 & , A30 & , A31 & , A32 & , A33 & , A34 & , A35 & , A36 & , A37 & , A38 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx)
                 );
         }
         
@@ -1751,27 +1922,33 @@
     
     
     
-
- template <typename Context, typename Expr>
- typename result_of::mem_fun_ptr_eval<Context, Expr>::type
- evaluate(
- Context & ctx
- , Expr const & expr
- , mpl::long_<40>
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ struct result<This(Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39)>
+ : result<This(Context, A0 const& , A1 const& , A2 const& , A3 const& , A4 const& , A5 const& , A6 const& , A7 const& , A8 const& , A9 const& , A10 const& , A11 const& , A12 const& , A13 const& , A14 const& , A15 const& , A16 const& , A17 const& , A18 const& , A19 const& , A20 const& , A21 const& , A22 const& , A23 const& , A24 const& , A25 const& , A26 const& , A27 const& , A28 const& , A29 const& , A30 const& , A31 const& , A32 const& , A33 const& , A34 const& , A35 const& , A36 const& , A37 const& , A38 const& , A39 const&)>
+ {};
+ template <typename This, typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ struct result<This(Context, A0 & , A1 & , A2 & , A3 & , A4 & , A5 & , A6 & , A7 & , A8 & , A9 & , A10 & , A11 & , A12 & , A13 & , A14 & , A15 & , A16 & , A17 & , A18 & , A19 & , A20 & , A21 & , A22 & , A23 & , A24 & , A25 & , A26 & , A27 & , A28 & , A29 & , A30 & , A31 & , A32 & , A33 & , A34 & , A35 & , A36 & , A37 & , A38 & , A39 &)>
+ : result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39>
+ {};
+ template <typename Context, typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
+ typename result_of::mem_fun_ptr_eval<Context, A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39>::type
+ operator()(
+ Context const & ctx, A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39
         ) const
         {
             return
                 (
- get_pointer(eval(proto::child_c<0>(expr), ctx))
- ->*eval(proto::child_c<1>(expr), ctx)
+ get_pointer(eval(a0, ctx))
+ ->*eval(a1, ctx)
                 )(
- eval(proto::child_c< 2 >(expr), ctx) , eval(proto::child_c< 3 >(expr), ctx) , eval(proto::child_c< 4 >(expr), ctx) , eval(proto::child_c< 5 >(expr), ctx) , eval(proto::child_c< 6 >(expr), ctx) , eval(proto::child_c< 7 >(expr), ctx) , eval(proto::child_c< 8 >(expr), ctx) , eval(proto::child_c< 9 >(expr), ctx) , eval(proto::child_c< 10 >(expr), ctx) , eval(proto::child_c< 11 >(expr), ctx) , eval(proto::child_c< 12 >(expr), ctx) , eval(proto::child_c< 13 >(expr), ctx) , eval(proto::child_c< 14 >(expr), ctx) , eval(proto::child_c< 15 >(expr), ctx) , eval(proto::child_c< 16 >(expr), ctx) , eval(proto::child_c< 17 >(expr), ctx) , eval(proto::child_c< 18 >(expr), ctx) , eval(proto::child_c< 19 >(expr), ctx) , eval(proto::child_c< 20 >(expr), ctx) , eval(proto::child_c< 21 >(expr), ctx) , eval(proto::child_c< 22 >(expr), ctx) , eval(proto::child_c< 23 >(expr), ctx) , eval(proto::child_c< 24 >(expr), ctx) , eval(proto::child_c< 25 >(expr), ctx) , eval(proto::child_c< 26 >(expr), ctx) , eval(proto
::child_c< 27 >(expr), ctx) , eval(proto::child_c< 28 >(expr), ctx) , eval(proto::child_c< 29 >(expr), ctx) , eval(proto::child_c< 30 >(expr), ctx) , eval(proto::child_c< 31 >(expr), ctx) , eval(proto::child_c< 32 >(expr), ctx) , eval(proto::child_c< 33 >(expr), ctx) , eval(proto::child_c< 34 >(expr), ctx) , eval(proto::child_c< 35 >(expr), ctx) , eval(proto::child_c< 36 >(expr), ctx) , eval(proto::child_c< 37 >(expr), ctx) , eval(proto::child_c< 38 >(expr), ctx) , eval(proto::child_c< 39 >(expr), ctx)
+ eval(a2, ctx) , eval(a3, ctx) , eval(a4, ctx) , eval(a5, ctx) , eval(a6, ctx) , eval(a7, ctx) , eval(a8, ctx) , eval(a9, ctx) , eval(a10, ctx) , eval(a11, ctx) , eval(a12, ctx) , eval(a13, ctx) , eval(a14, ctx) , eval(a15, ctx) , eval(a16, ctx) , eval(a17, ctx) , eval(a18, ctx) , eval(a19, ctx) , eval(a20, ctx) , eval(a21, ctx) , eval(a22, ctx) , eval(a23, ctx) , eval(a24, ctx) , eval(a25, ctx) , eval(a26, ctx) , eval(a27, ctx) , eval(a28, ctx) , eval(a29, ctx) , eval(a30, ctx) , eval(a31, ctx) , eval(a32, ctx) , eval(a33, ctx) , eval(a34, ctx) , eval(a35, ctx) , eval(a36, ctx) , eval(a37, ctx) , eval(a38, ctx) , eval(a39, ctx)
                 );
         }
         
     };
     template <typename Dummy>
     struct default_actions::when<rule::mem_fun_ptr, Dummy>
- : proto::call<mem_fun_ptr_eval(_context, proto::_)>
+
+ : call<mem_fun_ptr_eval>
     {};
 }}

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_10.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,6 +12,21 @@
     
     
     
+ template <typename A0>
+ let_actor_gen<
+ typename detail::make_locals<A0>::type
+ > const
+ operator()(A0 const& a0) const
+ {
+ return detail::make_locals<A0>::make(a0);
+ }
+
+
+
+
+
+
+
         template <typename A0 , typename A1>
         let_actor_gen<
             typename detail::make_locals<A0 , A1>::type

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_20.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,6 +12,21 @@
     
     
     
+ template <typename A0>
+ let_actor_gen<
+ typename detail::make_locals<A0>::type
+ > const
+ operator()(A0 const& a0) const
+ {
+ return detail::make_locals<A0>::make(a0);
+ }
+
+
+
+
+
+
+
         template <typename A0 , typename A1>
         let_actor_gen<
             typename detail::make_locals<A0 , A1>::type

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_30.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,6 +12,21 @@
     
     
     
+ template <typename A0>
+ let_actor_gen<
+ typename detail::make_locals<A0>::type
+ > const
+ operator()(A0 const& a0) const
+ {
+ return detail::make_locals<A0>::make(a0);
+ }
+
+
+
+
+
+
+
         template <typename A0 , typename A1>
         let_actor_gen<
             typename detail::make_locals<A0 , A1>::type

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/let_local_gen_40.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,6 +12,21 @@
     
     
     
+ template <typename A0>
+ let_actor_gen<
+ typename detail::make_locals<A0>::type
+ > const
+ operator()(A0 const& a0) const
+ {
+ return detail::make_locals<A0>::make(a0);
+ }
+
+
+
+
+
+
+
         template <typename A0 , typename A1>
         let_actor_gen<
             typename detail::make_locals<A0 , A1>::type

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_10.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_10.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_10.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,34 +12,48 @@
     
     
     
+ template <typename A0>
+ struct make_locals<A0>
+ {
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> > type;
+ static type const make(A0 a0)
+ {
+ return type(proto::child_c<1>(a0));
+ }
+ };
+
+
+
+
+
+
+
+ template <typename A0 , typename A1>
+ struct make_locals<A0 , A1>
+ {
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> > type;
+ static type const make(A0 a0 , A1 a1)
+ {
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1));
+ }
+ };
+
+
+
+
+
+
+
         template <typename A0 , typename A1 , typename A2>
         struct make_locals<A0 , A1 , A2>
         {
- typedef
- typename make_locals<
- A0 , A1
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A2
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2)
             {
- return
- expression::sequence<
- type0
- , A2
- >::make(
- make_locals<
- A0 , A1
- >::make(
- a0 , a1
- )
- , a2
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2));
             }
         };
     
@@ -52,31 +66,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3>
         struct make_locals<A0 , A1 , A2 , A3>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A3
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3)
             {
- return
- expression::sequence<
- type0
- , A3
- >::make(
- make_locals<
- A0 , A1 , A2
- >::make(
- a0 , a1 , a2
- )
- , a3
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3));
             }
         };
     
@@ -89,31 +83,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         struct make_locals<A0 , A1 , A2 , A3 , A4>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A4
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4)
             {
- return
- expression::sequence<
- type0
- , A4
- >::make(
- make_locals<
- A0 , A1 , A2 , A3
- >::make(
- a0 , a1 , a2 , a3
- )
- , a4
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4));
             }
         };
     
@@ -126,31 +100,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A5
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5)
             {
- return
- expression::sequence<
- type0
- , A5
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4
- >::make(
- a0 , a1 , a2 , a3 , a4
- )
- , a5
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5));
             }
         };
     
@@ -163,31 +117,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A6
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6)
             {
- return
- expression::sequence<
- type0
- , A6
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5
- )
- , a6
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6));
             }
         };
     
@@ -200,31 +134,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A7
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7)
             {
- return
- expression::sequence<
- type0
- , A7
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6
- )
- , a7
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7));
             }
         };
     
@@ -237,31 +151,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A8
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8)
             {
- return
- expression::sequence<
- type0
- , A8
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
- )
- , a8
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8));
             }
         };
     
@@ -274,30 +168,10 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A9
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9)
             {
- return
- expression::sequence<
- type0
- , A9
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
- )
- , a9
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9));
             }
         };

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_20.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_20.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_20.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,34 +12,48 @@
     
     
     
+ template <typename A0>
+ struct make_locals<A0>
+ {
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> > type;
+ static type const make(A0 a0)
+ {
+ return type(proto::child_c<1>(a0));
+ }
+ };
+
+
+
+
+
+
+
+ template <typename A0 , typename A1>
+ struct make_locals<A0 , A1>
+ {
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> > type;
+ static type const make(A0 a0 , A1 a1)
+ {
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1));
+ }
+ };
+
+
+
+
+
+
+
         template <typename A0 , typename A1 , typename A2>
         struct make_locals<A0 , A1 , A2>
         {
- typedef
- typename make_locals<
- A0 , A1
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A2
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2)
             {
- return
- expression::sequence<
- type0
- , A2
- >::make(
- make_locals<
- A0 , A1
- >::make(
- a0 , a1
- )
- , a2
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2));
             }
         };
     
@@ -52,31 +66,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3>
         struct make_locals<A0 , A1 , A2 , A3>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A3
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3)
             {
- return
- expression::sequence<
- type0
- , A3
- >::make(
- make_locals<
- A0 , A1 , A2
- >::make(
- a0 , a1 , a2
- )
- , a3
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3));
             }
         };
     
@@ -89,31 +83,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         struct make_locals<A0 , A1 , A2 , A3 , A4>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A4
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4)
             {
- return
- expression::sequence<
- type0
- , A4
- >::make(
- make_locals<
- A0 , A1 , A2 , A3
- >::make(
- a0 , a1 , a2 , a3
- )
- , a4
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4));
             }
         };
     
@@ -126,31 +100,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A5
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5)
             {
- return
- expression::sequence<
- type0
- , A5
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4
- >::make(
- a0 , a1 , a2 , a3 , a4
- )
- , a5
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5));
             }
         };
     
@@ -163,31 +117,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A6
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6)
             {
- return
- expression::sequence<
- type0
- , A6
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5
- )
- , a6
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6));
             }
         };
     
@@ -200,31 +134,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A7
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7)
             {
- return
- expression::sequence<
- type0
- , A7
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6
- )
- , a7
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7));
             }
         };
     
@@ -237,31 +151,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A8
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8)
             {
- return
- expression::sequence<
- type0
- , A8
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
- )
- , a8
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8));
             }
         };
     
@@ -274,31 +168,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A9
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9)
             {
- return
- expression::sequence<
- type0
- , A9
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
- )
- , a9
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9));
             }
         };
     
@@ -311,31 +185,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A10
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10)
             {
- return
- expression::sequence<
- type0
- , A10
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
- )
- , a10
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10));
             }
         };
     
@@ -348,31 +202,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A11
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11)
             {
- return
- expression::sequence<
- type0
- , A11
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
- )
- , a11
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11));
             }
         };
     
@@ -385,31 +219,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A12
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12)
             {
- return
- expression::sequence<
- type0
- , A12
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
- )
- , a12
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12));
             }
         };
     
@@ -422,31 +236,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A13
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13)
             {
- return
- expression::sequence<
- type0
- , A13
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
- )
- , a13
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13));
             }
         };
     
@@ -459,31 +253,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A14
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14)
             {
- return
- expression::sequence<
- type0
- , A14
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
- )
- , a14
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14));
             }
         };
     
@@ -496,31 +270,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A15
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15)
             {
- return
- expression::sequence<
- type0
- , A15
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
- )
- , a15
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15));
             }
         };
     
@@ -533,31 +287,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A16
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16)
             {
- return
- expression::sequence<
- type0
- , A16
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
- )
- , a16
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16));
             }
         };
     
@@ -570,31 +304,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A17
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17)
             {
- return
- expression::sequence<
- type0
- , A17
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
- )
- , a17
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17));
             }
         };
     
@@ -607,31 +321,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A18
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18)
             {
- return
- expression::sequence<
- type0
- , A18
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
- )
- , a18
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18));
             }
         };
     
@@ -644,30 +338,10 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A19
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19)
             {
- return
- expression::sequence<
- type0
- , A19
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
- )
- , a19
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19));
             }
         };

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_30.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_30.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_30.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,34 +12,48 @@
     
     
     
+ template <typename A0>
+ struct make_locals<A0>
+ {
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> > type;
+ static type const make(A0 a0)
+ {
+ return type(proto::child_c<1>(a0));
+ }
+ };
+
+
+
+
+
+
+
+ template <typename A0 , typename A1>
+ struct make_locals<A0 , A1>
+ {
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> > type;
+ static type const make(A0 a0 , A1 a1)
+ {
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1));
+ }
+ };
+
+
+
+
+
+
+
         template <typename A0 , typename A1 , typename A2>
         struct make_locals<A0 , A1 , A2>
         {
- typedef
- typename make_locals<
- A0 , A1
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A2
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2)
             {
- return
- expression::sequence<
- type0
- , A2
- >::make(
- make_locals<
- A0 , A1
- >::make(
- a0 , a1
- )
- , a2
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2));
             }
         };
     
@@ -52,31 +66,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3>
         struct make_locals<A0 , A1 , A2 , A3>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A3
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3)
             {
- return
- expression::sequence<
- type0
- , A3
- >::make(
- make_locals<
- A0 , A1 , A2
- >::make(
- a0 , a1 , a2
- )
- , a3
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3));
             }
         };
     
@@ -89,31 +83,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         struct make_locals<A0 , A1 , A2 , A3 , A4>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A4
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4)
             {
- return
- expression::sequence<
- type0
- , A4
- >::make(
- make_locals<
- A0 , A1 , A2 , A3
- >::make(
- a0 , a1 , a2 , a3
- )
- , a4
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4));
             }
         };
     
@@ -126,31 +100,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A5
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5)
             {
- return
- expression::sequence<
- type0
- , A5
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4
- >::make(
- a0 , a1 , a2 , a3 , a4
- )
- , a5
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5));
             }
         };
     
@@ -163,31 +117,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A6
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6)
             {
- return
- expression::sequence<
- type0
- , A6
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5
- )
- , a6
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6));
             }
         };
     
@@ -200,31 +134,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A7
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7)
             {
- return
- expression::sequence<
- type0
- , A7
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6
- )
- , a7
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7));
             }
         };
     
@@ -237,31 +151,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A8
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8)
             {
- return
- expression::sequence<
- type0
- , A8
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
- )
- , a8
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8));
             }
         };
     
@@ -274,31 +168,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A9
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9)
             {
- return
- expression::sequence<
- type0
- , A9
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
- )
- , a9
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9));
             }
         };
     
@@ -311,31 +185,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A10
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10)
             {
- return
- expression::sequence<
- type0
- , A10
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
- )
- , a10
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10));
             }
         };
     
@@ -348,31 +202,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A11
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11)
             {
- return
- expression::sequence<
- type0
- , A11
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
- )
- , a11
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11));
             }
         };
     
@@ -385,31 +219,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A12
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12)
             {
- return
- expression::sequence<
- type0
- , A12
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
- )
- , a12
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12));
             }
         };
     
@@ -422,31 +236,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A13
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13)
             {
- return
- expression::sequence<
- type0
- , A13
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
- )
- , a13
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13));
             }
         };
     
@@ -459,31 +253,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A14
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14)
             {
- return
- expression::sequence<
- type0
- , A14
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
- )
- , a14
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14));
             }
         };
     
@@ -496,31 +270,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A15
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15)
             {
- return
- expression::sequence<
- type0
- , A15
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
- )
- , a15
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15));
             }
         };
     
@@ -533,31 +287,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A16
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16)
             {
- return
- expression::sequence<
- type0
- , A16
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
- )
- , a16
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16));
             }
         };
     
@@ -570,31 +304,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A17
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17)
             {
- return
- expression::sequence<
- type0
- , A17
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
- )
- , a17
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17));
             }
         };
     
@@ -607,31 +321,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A18
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18)
             {
- return
- expression::sequence<
- type0
- , A18
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
- )
- , a18
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18));
             }
         };
     
@@ -644,31 +338,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A19
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19)
             {
- return
- expression::sequence<
- type0
- , A19
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
- )
- , a19
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19));
             }
         };
     
@@ -681,31 +355,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A20
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20)
             {
- return
- expression::sequence<
- type0
- , A20
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
- )
- , a20
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20));
             }
         };
     
@@ -718,31 +372,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A21
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21)
             {
- return
- expression::sequence<
- type0
- , A21
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
- )
- , a21
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21));
             }
         };
     
@@ -755,31 +389,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A22
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22)
             {
- return
- expression::sequence<
- type0
- , A22
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
- )
- , a22
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22));
             }
         };
     
@@ -792,31 +406,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A23
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23)
             {
- return
- expression::sequence<
- type0
- , A23
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
- )
- , a23
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23));
             }
         };
     
@@ -829,31 +423,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A24
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24)
             {
- return
- expression::sequence<
- type0
- , A24
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
- )
- , a24
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24));
             }
         };
     
@@ -866,31 +440,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A25
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25)
             {
- return
- expression::sequence<
- type0
- , A25
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24
- )
- , a25
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25));
             }
         };
     
@@ -903,31 +457,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A26
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26)
             {
- return
- expression::sequence<
- type0
- , A26
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25
- )
- , a26
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26));
             }
         };
     
@@ -940,31 +474,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A27
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27)
             {
- return
- expression::sequence<
- type0
- , A27
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26
- )
- , a27
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27));
             }
         };
     
@@ -977,31 +491,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A28
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28)
             {
- return
- expression::sequence<
- type0
- , A28
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27
- )
- , a28
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28));
             }
         };
     
@@ -1014,30 +508,10 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A29
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29)
             {
- return
- expression::sequence<
- type0
- , A29
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28
- )
- , a29
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29));
             }
         };

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/detail/preprocessed/make_locals_40.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,34 +12,48 @@
     
     
     
+ template <typename A0>
+ struct make_locals<A0>
+ {
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> > type;
+ static type const make(A0 a0)
+ {
+ return type(proto::child_c<1>(a0));
+ }
+ };
+
+
+
+
+
+
+
+ template <typename A0 , typename A1>
+ struct make_locals<A0 , A1>
+ {
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> > type;
+ static type const make(A0 a0 , A1 a1)
+ {
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1));
+ }
+ };
+
+
+
+
+
+
+
         template <typename A0 , typename A1 , typename A2>
         struct make_locals<A0 , A1 , A2>
         {
- typedef
- typename make_locals<
- A0 , A1
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A2
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2)
             {
- return
- expression::sequence<
- type0
- , A2
- >::make(
- make_locals<
- A0 , A1
- >::make(
- a0 , a1
- )
- , a2
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2));
             }
         };
     
@@ -52,31 +66,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3>
         struct make_locals<A0 , A1 , A2 , A3>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A3
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3)
             {
- return
- expression::sequence<
- type0
- , A3
- >::make(
- make_locals<
- A0 , A1 , A2
- >::make(
- a0 , a1 , a2
- )
- , a3
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3));
             }
         };
     
@@ -89,31 +83,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
         struct make_locals<A0 , A1 , A2 , A3 , A4>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A4
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4)
             {
- return
- expression::sequence<
- type0
- , A4
- >::make(
- make_locals<
- A0 , A1 , A2 , A3
- >::make(
- a0 , a1 , a2 , a3
- )
- , a4
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4));
             }
         };
     
@@ -126,31 +100,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A5
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5)
             {
- return
- expression::sequence<
- type0
- , A5
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4
- >::make(
- a0 , a1 , a2 , a3 , a4
- )
- , a5
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5));
             }
         };
     
@@ -163,31 +117,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A6
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6)
             {
- return
- expression::sequence<
- type0
- , A6
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5
- )
- , a6
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6));
             }
         };
     
@@ -200,31 +134,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A7
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7)
             {
- return
- expression::sequence<
- type0
- , A7
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6
- )
- , a7
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7));
             }
         };
     
@@ -237,31 +151,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A8
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8)
             {
- return
- expression::sequence<
- type0
- , A8
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
- )
- , a8
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8));
             }
         };
     
@@ -274,31 +168,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A9
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9)
             {
- return
- expression::sequence<
- type0
- , A9
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
- )
- , a9
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9));
             }
         };
     
@@ -311,31 +185,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A10
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10)
             {
- return
- expression::sequence<
- type0
- , A10
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
- )
- , a10
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10));
             }
         };
     
@@ -348,31 +202,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A11
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11)
             {
- return
- expression::sequence<
- type0
- , A11
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
- )
- , a11
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11));
             }
         };
     
@@ -385,31 +219,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A12
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12)
             {
- return
- expression::sequence<
- type0
- , A12
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
- )
- , a12
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12));
             }
         };
     
@@ -422,31 +236,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A13
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13)
             {
- return
- expression::sequence<
- type0
- , A13
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
- )
- , a13
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13));
             }
         };
     
@@ -459,31 +253,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A14
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14)
             {
- return
- expression::sequence<
- type0
- , A14
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
- )
- , a14
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14));
             }
         };
     
@@ -496,31 +270,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A15
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15)
             {
- return
- expression::sequence<
- type0
- , A15
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
- )
- , a15
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15));
             }
         };
     
@@ -533,31 +287,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A16
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16)
             {
- return
- expression::sequence<
- type0
- , A16
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
- )
- , a16
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16));
             }
         };
     
@@ -570,31 +304,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A17
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17)
             {
- return
- expression::sequence<
- type0
- , A17
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
- )
- , a17
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17));
             }
         };
     
@@ -607,31 +321,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A18
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18)
             {
- return
- expression::sequence<
- type0
- , A18
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
- )
- , a18
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18));
             }
         };
     
@@ -644,31 +338,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A19
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19)
             {
- return
- expression::sequence<
- type0
- , A19
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
- )
- , a19
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19));
             }
         };
     
@@ -681,31 +355,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A20
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20)
             {
- return
- expression::sequence<
- type0
- , A20
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
- )
- , a20
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20));
             }
         };
     
@@ -718,31 +372,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A21
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21)
             {
- return
- expression::sequence<
- type0
- , A21
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
- )
- , a21
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21));
             }
         };
     
@@ -755,31 +389,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A22
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22)
             {
- return
- expression::sequence<
- type0
- , A22
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
- )
- , a22
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22));
             }
         };
     
@@ -792,31 +406,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A23
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23)
             {
- return
- expression::sequence<
- type0
- , A23
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
- )
- , a23
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23));
             }
         };
     
@@ -829,31 +423,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A24
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24)
             {
- return
- expression::sequence<
- type0
- , A24
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
- )
- , a24
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24));
             }
         };
     
@@ -866,31 +440,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A25
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25)
             {
- return
- expression::sequence<
- type0
- , A25
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24
- )
- , a25
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25));
             }
         };
     
@@ -903,31 +457,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A26
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26)
             {
- return
- expression::sequence<
- type0
- , A26
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25
- )
- , a26
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26));
             }
         };
     
@@ -940,31 +474,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A27
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27)
             {
- return
- expression::sequence<
- type0
- , A27
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26
- )
- , a27
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27));
             }
         };
     
@@ -977,31 +491,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A28
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28)
             {
- return
- expression::sequence<
- type0
- , A28
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27
- )
- , a28
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28));
             }
         };
     
@@ -1014,31 +508,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A29
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29)
             {
- return
- expression::sequence<
- type0
- , A29
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28
- )
- , a29
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29));
             }
         };
     
@@ -1051,31 +525,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A30
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A30 , 0 >::type , 0 >::type >::type tag_type30; typede
f typename proto::result_of::child_c< A30 , 1 >::type var_type30;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> , fusion::pair<tag_type30, var_type30> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29 , A30 a30)
             {
- return
- expression::sequence<
- type0
- , A30
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29
- )
- , a30
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29) , proto::child_c<1>(a30));
             }
         };
     
@@ -1088,31 +542,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A31
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A30 , 0 >::type , 0 >::type >::type tag_type30; typede
f typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A31 , 0 >::type , 0 >::type >::type tag_type31; typedef typename proto::result_of::child_c< A31 , 1 >::type var_type31;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> , fusion::pair<tag_type30, var_type30> , fusion::pair<tag_type31, var_type31> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29 , A30 a30 , A31 a31)
             {
- return
- expression::sequence<
- type0
- , A31
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30
- )
- , a31
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29) , proto::child_c<1>(a30) , proto::child_c<1>(a31));
             }
         };
     
@@ -1125,31 +559,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A32
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A30 , 0 >::type , 0 >::type >::type tag_type30; typede
f typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A31 , 0 >::type , 0 >::type >::type tag_type31; typedef typename proto::result_of::child_c< A31 , 1 >::type var_type31; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A32 , 0 >::type , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> , fusion::pair<tag_type30, var_type30> , fusion::pair<tag_type31, var_type31> , fusion::pair<tag_type32, var_type32> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29 , A30 a30 , A31 a31 , A32 a32)
             {
- return
- expression::sequence<
- type0
- , A32
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31
- )
- , a32
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29) , proto::child_c<1>(a30) , proto::child_c<1>(a31) , proto::child_c<1>(a32));
             }
         };
     
@@ -1162,31 +576,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A33
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A30 , 0 >::type , 0 >::type >::type tag_type30; typede
f typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A31 , 0 >::type , 0 >::type >::type tag_type31; typedef typename proto::result_of::child_c< A31 , 1 >::type var_type31; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A32 , 0 >::type , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A33 , 0 >::type , 0 >::type >::type tag_type33; typedef typename proto::result_of::child_c< A33 , 1 >::type var_type33;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> , fusion::pair<tag_type30, var_type30> , fusion::pair<tag_type31, var_type31> , fusion::pair<tag_type32, var_type32> , fusion::pair<tag_type33, var_type33> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29 , A30 a30 , A31 a31 , A32 a32 , A33 a33)
             {
- return
- expression::sequence<
- type0
- , A33
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32
- )
- , a33
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29) , proto::child_c<1>(a30) , proto::child_c<1>(a31) , proto::child_c<1>(a32) , proto::child_c<1>(a33));
             }
         };
     
@@ -1199,31 +593,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A34
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A30 , 0 >::type , 0 >::type >::type tag_type30; typede
f typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A31 , 0 >::type , 0 >::type >::type tag_type31; typedef typename proto::result_of::child_c< A31 , 1 >::type var_type31; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A32 , 0 >::type , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A33 , 0 >::type , 0 >::type >::type tag_type33; typedef typename proto::result_of::child_c< A33 , 1 >::type var_type33; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A34 , 0 >::type , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> , fusion::pair<tag_type30, var_type30> , fusion::pair<tag_type31, var_type31> , fusion::pair<tag_type32, var_type32> , fusion::pair<tag_type33, var_type33> , fusion::pair<tag_type34, var_type34> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29 , A30 a30 , A31 a31 , A32 a32 , A33 a33 , A34 a34)
             {
- return
- expression::sequence<
- type0
- , A34
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33
- )
- , a34
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29) , proto::child_c<1>(a30) , proto::child_c<1>(a31) , proto::child_c<1>(a32) , proto::child_c<1>(a33) , proto::child_c<1>(a34));
             }
         };
     
@@ -1236,31 +610,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A35
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A30 , 0 >::type , 0 >::type >::type tag_type30; typede
f typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A31 , 0 >::type , 0 >::type >::type tag_type31; typedef typename proto::result_of::child_c< A31 , 1 >::type var_type31; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A32 , 0 >::type , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A33 , 0 >::type , 0 >::type >::type tag_type33; typedef typename proto::result_of::child_c< A33 , 1 >::type var_type33; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A34 , 0 >::type , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename prot
o::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A35 , 0 >::type , 0 >::type >::type tag_type35; typedef typename proto::result_of::child_c< A35 , 1 >::type var_type35;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> , fusion::pair<tag_type30, var_type30> , fusion::pair<tag_type31, var_type31> , fusion::pair<tag_type32, var_type32> , fusion::pair<tag_type33, var_type33> , fusion::pair<tag_type34, var_type34> , fusion::pair<tag_type35, var_type35> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29 , A30 a30 , A31 a31 , A32 a32 , A33 a33 , A34 a34 , A35 a35)
             {
- return
- expression::sequence<
- type0
- , A35
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34
- )
- , a35
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29) , proto::child_c<1>(a30) , proto::child_c<1>(a31) , proto::child_c<1>(a32) , proto::child_c<1>(a33) , proto::child_c<1>(a34) , proto::child_c<1>(a35));
             }
         };
     
@@ -1273,31 +627,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A36
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A30 , 0 >::type , 0 >::type >::type tag_type30; typede
f typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A31 , 0 >::type , 0 >::type >::type tag_type31; typedef typename proto::result_of::child_c< A31 , 1 >::type var_type31; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A32 , 0 >::type , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A33 , 0 >::type , 0 >::type >::type tag_type33; typedef typename proto::result_of::child_c< A33 , 1 >::type var_type33; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A34 , 0 >::type , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename prot
o::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A35 , 0 >::type , 0 >::type >::type tag_type35; typedef typename proto::result_of::child_c< A35 , 1 >::type var_type35; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A36 , 0 >::type , 0 >::type >::type tag_type36; typedef typename proto::result_of::child_c< A36 , 1 >::type var_type36;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> , fusion::pair<tag_type30, var_type30> , fusion::pair<tag_type31, var_type31> , fusion::pair<tag_type32, var_type32> , fusion::pair<tag_type33, var_type33> , fusion::pair<tag_type34, var_type34> , fusion::pair<tag_type35, var_type35> , fusion::pair<tag_type36, var_type36> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29 , A30 a30 , A31 a31 , A32 a32 , A33 a33 , A34 a34 , A35 a35 , A36 a36)
             {
- return
- expression::sequence<
- type0
- , A36
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35
- )
- , a36
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29) , proto::child_c<1>(a30) , proto::child_c<1>(a31) , proto::child_c<1>(a32) , proto::child_c<1>(a33) , proto::child_c<1>(a34) , proto::child_c<1>(a35) , proto::child_c<1>(a36));
             }
         };
     
@@ -1310,31 +644,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A37
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A30 , 0 >::type , 0 >::type >::type tag_type30; typede
f typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A31 , 0 >::type , 0 >::type >::type tag_type31; typedef typename proto::result_of::child_c< A31 , 1 >::type var_type31; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A32 , 0 >::type , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A33 , 0 >::type , 0 >::type >::type tag_type33; typedef typename proto::result_of::child_c< A33 , 1 >::type var_type33; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A34 , 0 >::type , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename prot
o::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A35 , 0 >::type , 0 >::type >::type tag_type35; typedef typename proto::result_of::child_c< A35 , 1 >::type var_type35; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A36 , 0 >::type , 0 >::type >::type tag_type36; typedef typename proto::result_of::child_c< A36 , 1 >::type var_type36; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A37 , 0 >::type , 0 >::type >::type tag_type37; typedef typename proto::result_of::child_c< A37 , 1 >::type var_type37;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> , fusion::pair<tag_type30, var_type30> , fusion::pair<tag_type31, var_type31> , fusion::pair<tag_type32, var_type32> , fusion::pair<tag_type33, var_type33> , fusion::pair<tag_type34, var_type34> , fusion::pair<tag_type35, var_type35> , fusion::pair<tag_type36, var_type36> , fusion::pair<tag_type37, var_type37> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29 , A30 a30 , A31 a31 , A32 a32 , A33 a33 , A34 a34 , A35 a35 , A36 a36 , A37 a37)
             {
- return
- expression::sequence<
- type0
- , A37
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36
- )
- , a37
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29) , proto::child_c<1>(a30) , proto::child_c<1>(a31) , proto::child_c<1>(a32) , proto::child_c<1>(a33) , proto::child_c<1>(a34) , proto::child_c<1>(a35) , proto::child_c<1>(a36) , proto::child_c<1>(a37));
             }
         };
     
@@ -1347,31 +661,11 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A38
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A30 , 0 >::type , 0 >::type >::type tag_type30; typede
f typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A31 , 0 >::type , 0 >::type >::type tag_type31; typedef typename proto::result_of::child_c< A31 , 1 >::type var_type31; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A32 , 0 >::type , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A33 , 0 >::type , 0 >::type >::type tag_type33; typedef typename proto::result_of::child_c< A33 , 1 >::type var_type33; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A34 , 0 >::type , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename prot
o::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A35 , 0 >::type , 0 >::type >::type tag_type35; typedef typename proto::result_of::child_c< A35 , 1 >::type var_type35; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A36 , 0 >::type , 0 >::type >::type tag_type36; typedef typename proto::result_of::child_c< A36 , 1 >::type var_type36; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A37 , 0 >::type , 0 >::type >::type tag_type37; typedef typename proto::result_of::child_c< A37 , 1 >::type var_type37; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A38 , 0 >::type , 0 >::type >::type tag_type38; typedef typename proto::result_of::child_c< A38 , 1 >::type var_type38;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> , fusion::pair<tag_type30, var_type30> , fusion::pair<tag_type31, var_type31> , fusion::pair<tag_type32, var_type32> , fusion::pair<tag_type33, var_type33> , fusion::pair<tag_type34, var_type34> , fusion::pair<tag_type35, var_type35> , fusion::pair<tag_type36, var_type36> , fusion::pair<tag_type37, var_type37> , fusion::pair<tag_type38, var_type38> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29 , A30 a30 , A31 a31 , A32 a32 , A33 a33 , A34 a34 , A35 a35 , A36 a36 , A37 a37 , A38 a38)
             {
- return
- expression::sequence<
- type0
- , A38
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37
- )
- , a38
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29) , proto::child_c<1>(a30) , proto::child_c<1>(a31) , proto::child_c<1>(a32) , proto::child_c<1>(a33) , proto::child_c<1>(a34) , proto::child_c<1>(a35) , proto::child_c<1>(a36) , proto::child_c<1>(a37) , proto::child_c<1>(a38));
             }
         };
     
@@ -1384,30 +678,10 @@
         template <typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
         struct make_locals<A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39>
         {
- typedef
- typename make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38
- >::type const
- type0;
- typedef
- typename expression::sequence<
- type0
- , A39
- >::type
- type;
+ typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A0 , 0 >::type , 0 >::type >::type tag_type0; typedef typename proto::result_of::child_c< A0 , 1 >::type var_type0; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A1 , 0 >::type , 0 >::type >::type tag_type1; typedef typename proto::result_of::child_c< A1 , 1 >::type var_type1; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A2 , 0 >::type , 0 >::type >::type tag_type2; typedef typename proto::result_of::child_c< A2 , 1 >::type var_type2; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A3 , 0 >::type , 0 >::type >::type tag_type3; typedef typename proto::result_of::child_c< A3 , 1 >::type var_type3; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename pro
to::result_of::child_c< A4 , 0 >::type , 0 >::type >::type tag_type4; typedef typename proto::result_of::child_c< A4 , 1 >::type var_type4; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A5 , 0 >::type , 0 >::type >::type tag_type5; typedef typename proto::result_of::child_c< A5 , 1 >::type var_type5; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A6 , 0 >::type , 0 >::type >::type tag_type6; typedef typename proto::result_of::child_c< A6 , 1 >::type var_type6; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A7 , 0 >::type , 0 >::type >::type tag_type7; typedef typename proto::result_of::child_c< A7 , 1 >::type var_type7; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A8 , 0 >::type , 0 >::type >::type tag_type8; typedef typename proto::result_of
::child_c< A8 , 1 >::type var_type8; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A9 , 0 >::type , 0 >::type >::type tag_type9; typedef typename proto::result_of::child_c< A9 , 1 >::type var_type9; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A10 , 0 >::type , 0 >::type >::type tag_type10; typedef typename proto::result_of::child_c< A10 , 1 >::type var_type10; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A11 , 0 >::type , 0 >::type >::type tag_type11; typedef typename proto::result_of::child_c< A11 , 1 >::type var_type11; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A12 , 0 >::type , 0 >::type >::type tag_type12; typedef typename proto::result_of::child_c< A12 , 1 >::type var_type12; typedef typename proto::result_of::value< typename pro
to::result_of::child_c< typename proto::result_of::child_c< A13 , 0 >::type , 0 >::type >::type tag_type13; typedef typename proto::result_of::child_c< A13 , 1 >::type var_type13; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A14 , 0 >::type , 0 >::type >::type tag_type14; typedef typename proto::result_of::child_c< A14 , 1 >::type var_type14; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A15 , 0 >::type , 0 >::type >::type tag_type15; typedef typename proto::result_of::child_c< A15 , 1 >::type var_type15; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A16 , 0 >::type , 0 >::type >::type tag_type16; typedef typename proto::result_of::child_c< A16 , 1 >::type var_type16; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A17 , 0 >::type , 0 >::type
>::type tag_type17; typedef typename proto::result_of::child_c< A17 , 1 >::type var_type17; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A18 , 0 >::type , 0 >::type >::type tag_type18; typedef typename proto::result_of::child_c< A18 , 1 >::type var_type18; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A19 , 0 >::type , 0 >::type >::type tag_type19; typedef typename proto::result_of::child_c< A19 , 1 >::type var_type19; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A20 , 0 >::type , 0 >::type >::type tag_type20; typedef typename proto::result_of::child_c< A20 , 1 >::type var_type20; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A21 , 0 >::type , 0 >::type >::type tag_type21; typedef typename proto::result_of::child_c< A21 , 1 >::type var_ty
pe21; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A22 , 0 >::type , 0 >::type >::type tag_type22; typedef typename proto::result_of::child_c< A22 , 1 >::type var_type22; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A23 , 0 >::type , 0 >::type >::type tag_type23; typedef typename proto::result_of::child_c< A23 , 1 >::type var_type23; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A24 , 0 >::type , 0 >::type >::type tag_type24; typedef typename proto::result_of::child_c< A24 , 1 >::type var_type24; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A25 , 0 >::type , 0 >::type >::type tag_type25; typedef typename proto::result_of::child_c< A25 , 1 >::type var_type25; typedef typename proto::result_of::value< typename proto::result_of::child_c< typ
ename proto::result_of::child_c< A26 , 0 >::type , 0 >::type >::type tag_type26; typedef typename proto::result_of::child_c< A26 , 1 >::type var_type26; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A27 , 0 >::type , 0 >::type >::type tag_type27; typedef typename proto::result_of::child_c< A27 , 1 >::type var_type27; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A28 , 0 >::type , 0 >::type >::type tag_type28; typedef typename proto::result_of::child_c< A28 , 1 >::type var_type28; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A29 , 0 >::type , 0 >::type >::type tag_type29; typedef typename proto::result_of::child_c< A29 , 1 >::type var_type29; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A30 , 0 >::type , 0 >::type >::type tag_type30; typede
f typename proto::result_of::child_c< A30 , 1 >::type var_type30; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A31 , 0 >::type , 0 >::type >::type tag_type31; typedef typename proto::result_of::child_c< A31 , 1 >::type var_type31; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A32 , 0 >::type , 0 >::type >::type tag_type32; typedef typename proto::result_of::child_c< A32 , 1 >::type var_type32; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A33 , 0 >::type , 0 >::type >::type tag_type33; typedef typename proto::result_of::child_c< A33 , 1 >::type var_type33; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A34 , 0 >::type , 0 >::type >::type tag_type34; typedef typename proto::result_of::child_c< A34 , 1 >::type var_type34; typedef typename prot
o::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A35 , 0 >::type , 0 >::type >::type tag_type35; typedef typename proto::result_of::child_c< A35 , 1 >::type var_type35; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A36 , 0 >::type , 0 >::type >::type tag_type36; typedef typename proto::result_of::child_c< A36 , 1 >::type var_type36; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A37 , 0 >::type , 0 >::type >::type tag_type37; typedef typename proto::result_of::child_c< A37 , 1 >::type var_type37; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::child_c< A38 , 0 >::type , 0 >::type >::type tag_type38; typedef typename proto::result_of::child_c< A38 , 1 >::type var_type38; typedef typename proto::result_of::value< typename proto::result_of::child_c< typename proto::result_of::chi
ld_c< A39 , 0 >::type , 0 >::type >::type tag_type39; typedef typename proto::result_of::child_c< A39 , 1 >::type var_type39;
+ typedef fusion::map<fusion::pair<tag_type0, var_type0> , fusion::pair<tag_type1, var_type1> , fusion::pair<tag_type2, var_type2> , fusion::pair<tag_type3, var_type3> , fusion::pair<tag_type4, var_type4> , fusion::pair<tag_type5, var_type5> , fusion::pair<tag_type6, var_type6> , fusion::pair<tag_type7, var_type7> , fusion::pair<tag_type8, var_type8> , fusion::pair<tag_type9, var_type9> , fusion::pair<tag_type10, var_type10> , fusion::pair<tag_type11, var_type11> , fusion::pair<tag_type12, var_type12> , fusion::pair<tag_type13, var_type13> , fusion::pair<tag_type14, var_type14> , fusion::pair<tag_type15, var_type15> , fusion::pair<tag_type16, var_type16> , fusion::pair<tag_type17, var_type17> , fusion::pair<tag_type18, var_type18> , fusion::pair<tag_type19, var_type19> , fusion::pair<tag_type20, var_type20> , fusion::pair<tag_type21, var_type21> , fusion::pair<tag_type22, var_type22> , fusion::pair<tag_type23, var_type23> , fusion::pair<tag_type24, var_type24> , fusion::pair<tag_type25, var_type25
> , fusion::pair<tag_type26, var_type26> , fusion::pair<tag_type27, var_type27> , fusion::pair<tag_type28, var_type28> , fusion::pair<tag_type29, var_type29> , fusion::pair<tag_type30, var_type30> , fusion::pair<tag_type31, var_type31> , fusion::pair<tag_type32, var_type32> , fusion::pair<tag_type33, var_type33> , fusion::pair<tag_type34, var_type34> , fusion::pair<tag_type35, var_type35> , fusion::pair<tag_type36, var_type36> , fusion::pair<tag_type37, var_type37> , fusion::pair<tag_type38, var_type38> , fusion::pair<tag_type39, var_type39> > type;
             static type const make(A0 a0 , A1 a1 , A2 a2 , A3 a3 , A4 a4 , A5 a5 , A6 a6 , A7 a7 , A8 a8 , A9 a9 , A10 a10 , A11 a11 , A12 a12 , A13 a13 , A14 a14 , A15 a15 , A16 a16 , A17 a17 , A18 a18 , A19 a19 , A20 a20 , A21 a21 , A22 a22 , A23 a23 , A24 a24 , A25 a25 , A26 a26 , A27 a27 , A28 a28 , A29 a29 , A30 a30 , A31 a31 , A32 a32 , A33 a33 , A34 a34 , A35 a35 , A36 a36 , A37 a37 , A38 a38 , A39 a39)
             {
- return
- expression::sequence<
- type0
- , A39
- >::make(
- make_locals<
- A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38
- >::make(
- a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38
- )
- , a39
- );
+ return type(proto::child_c<1>(a0) , proto::child_c<1>(a1) , proto::child_c<1>(a2) , proto::child_c<1>(a3) , proto::child_c<1>(a4) , proto::child_c<1>(a5) , proto::child_c<1>(a6) , proto::child_c<1>(a7) , proto::child_c<1>(a8) , proto::child_c<1>(a9) , proto::child_c<1>(a10) , proto::child_c<1>(a11) , proto::child_c<1>(a12) , proto::child_c<1>(a13) , proto::child_c<1>(a14) , proto::child_c<1>(a15) , proto::child_c<1>(a16) , proto::child_c<1>(a17) , proto::child_c<1>(a18) , proto::child_c<1>(a19) , proto::child_c<1>(a20) , proto::child_c<1>(a21) , proto::child_c<1>(a22) , proto::child_c<1>(a23) , proto::child_c<1>(a24) , proto::child_c<1>(a25) , proto::child_c<1>(a26) , proto::child_c<1>(a27) , proto::child_c<1>(a28) , proto::child_c<1>(a29) , proto::child_c<1>(a30) , proto::child_c<1>(a31) , proto::child_c<1>(a32) , proto::child_c<1>(a33) , proto::child_c<1>(a34) , proto::child_c<1>(a35) , proto::child_c<1>(a36) , proto::child_c<1>(a37) , proto::child_c<1>(a38) , proto::child_c<1>(a39));
             }
         };

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/dynamic.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/dynamic.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/dynamic.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -15,6 +15,7 @@
 #include <boost/fusion/sequence/intrinsic/at.hpp>
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
+#include <boost/phoenix/core/call.hpp>
 #include <boost/phoenix/support/iterate.hpp>
 #include <boost/preprocessor/seq/for_each.hpp>
 #include <boost/preprocessor/seq/fold_left.hpp>
@@ -68,6 +69,12 @@
     ) \
 /**/
 
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(dynamic_member)
+ , (proto::terminal<proto::_>)
+ (proto::terminal<proto::_>)
+)
+
 namespace boost { namespace phoenix
 {
     template <typename DynamicScope>
@@ -106,19 +113,13 @@
             DynamicScope const& scope;
     };
 
- PHOENIX_DEFINE_EXPRESSION(
- dynamic_member
- , (proto::terminal<proto::_>)
- (proto::terminal<proto::_>)
- )
-
     struct dynamic_member_eval
     {
         template <typename Sig>
         struct result;
 
- template <typename This, typename N, typename Scope>
- struct result<This(N, Scope)>
+ template <typename This, typename Context, typename N, typename Scope>
+ struct result<This(Context, N, Scope)>
         {
             typedef
                 typename boost::remove_pointer<
@@ -138,9 +139,9 @@
 
         };
 
- template <typename N, typename Scope>
- typename result<dynamic_member_eval(N, Scope)>::type
- operator()(N, Scope s) const
+ template <typename Context, typename N, typename Scope>
+ typename result<dynamic_member_eval(Context, N, Scope)>::type
+ operator()(Context const&, N, Scope s) const
         {
             return fusion::at_c<N::value>(s->frame->data());
         }
@@ -148,12 +149,7 @@
 
     template <typename Dummy>
     struct default_actions::when<rule::dynamic_member, Dummy>
- : proto::call<
- dynamic_member_eval(
- proto::_value(proto::_child_c<0>)
- , proto::_value(proto::_child_c<1>)
- )
- >
+ : call<dynamic_member_eval>
     {};
     
     template <

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/lambda.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -15,15 +15,16 @@
 #include <boost/phoenix/core/meta_grammar.hpp>
 #include <boost/phoenix/scope/local_variable.hpp>
 #include <boost/phoenix/scope/scoped_environment.hpp>
+
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(lambda)
+ , (proto::terminal<proto::_>) // OuterEnv
+ (proto::terminal<proto::_>) // Locals
+ (meta_grammar) // Lambda
+)
 
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION(
- lambda
- , (proto::terminal<proto::_>) // OuterEnv
- (proto::terminal<proto::_>) // Locals
- (meta_grammar) // Lambda
- )
 
     struct lambda_eval
     {
@@ -237,7 +238,7 @@
 
     template <typename Dummy>
     struct meta_grammar::case_<tag::lambda_actor, Dummy>
- : proto::when<rule::lambda_actor, proto::external_transform>
+ : enable_rule<rule::lambda_actor>
     {};
 
     struct lambda_actor_eval

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/let.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -17,14 +17,14 @@
 #include <boost/phoenix/scope/local_variable.hpp>
 #include <boost/phoenix/support/iterate.hpp>
 
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(let)
+ , (proto::terminal<proto::_>)
+ (meta_grammar)
+)
+
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION(
- let
- , (proto::terminal<proto::_>)
- (meta_grammar)
- )
-
     struct let_eval
     {
         template <typename Sig>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/local_variable.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -58,10 +58,7 @@
 
     template <typename Dummy>
     struct meta_grammar::case_<tag::local_variable, Dummy>
- : proto::when<
- rule::local_variable
- , proto::external_transform
- >
+ : enable_rule<rule::local_variable>
     {};
 
     template <typename Dummy>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/scope/this.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/scope/this.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/scope/this.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -16,17 +16,17 @@
 #include <boost/phoenix/core/terminal.hpp>
 #include <boost/type_traits/remove_pointer.hpp>
 
+PHOENIX_DEFINE_EXPRESSION_VARARG(
+ (boost)(phoenix)(this_function)
+ , (meta_grammar)
+ , PHOENIX_LIMIT
+)
+
 namespace boost { namespace phoenix {
 
     template <typename Expr>
     struct this_actor;
 
- PHOENIX_DEFINE_EXPRESSION_VARARG(
- this_function
- , (meta_grammar)
- , PHOENIX_LIMIT
- )
-
     namespace detail
     {
         template <typename Dummy>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/detail/preprocessed/try_catch_expression_40.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -1,663 +0,0 @@
-/*==============================================================================
- Copyright (c) 2005-2010 Joel de Guzman
- Copyright (c) 2010 Thomas Heller
-
- 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)
-==============================================================================*/
-
-
-
-
-
-
-
- template <typename Try >
- struct try_catch<Try >
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- >
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0>
- struct try_catch<Try , A0>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1>
- struct try_catch<Try , A0 , A1>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2>
- struct try_catch<Try , A0 , A1 , A2>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3>
- struct try_catch<Try , A0 , A1 , A2 , A3>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38>
- {};
-
-
-
-
-
-
-
-
- template <typename Try , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39>
- struct try_catch<Try , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39>
- : expr_ext<
- try_catch_actor
- , tag::try_catch
- , Try
- , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39>
- {};
-

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/do_while.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/do_while.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/do_while.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,13 +12,15 @@
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
 
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(do_while)
+ , (meta_grammar) // Cond
+ (meta_grammar) // Do
+)
+
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION(
- do_while
- , (meta_grammar) // Cond
- (meta_grammar) // Do
- )
+
 
     struct do_while_eval
         : proto::callable

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/for.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/for.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/for.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -11,17 +11,17 @@
 #include <boost/phoenix/core/limits.hpp>
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
+
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(for_)
+ , (meta_grammar) // Cond
+ (meta_grammar) // Init
+ (meta_grammar) // Step
+ (meta_grammar) // Do
+)
 
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION(
- for_
- , (meta_grammar) // Cond
- (meta_grammar) // Init
- (meta_grammar) // Step
- (meta_grammar) // Do
- )
-
     struct for_eval
     {
         typedef void result_type;

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/if.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/if.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/if.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -21,26 +21,29 @@
 
 namespace boost { namespace phoenix
 {
+ template <typename> struct if_actor;
+}}
+
+PHOENIX_DEFINE_EXPRESSION_EXT(
+ if_actor
+ , (boost)(phoenix)(if_)
+ , (meta_grammar) // Cond
+ (meta_grammar) // Then
+)
+
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(if_else_statement)
+ , (meta_grammar) // Cond
+ (meta_grammar) // Then
+ (meta_grammar) // Else
+)
+
+namespace boost { namespace phoenix
+{
     ////////////////////////////////////////////////////////////////////////////
     // If-Else statements
     ////////////////////////////////////////////////////////////////////////////
     
- template <typename> struct if_actor;
-
- PHOENIX_DEFINE_EXPRESSION_EXT(
- if_actor
- , if_
- , (meta_grammar) // Cond
- (meta_grammar) // Then
- )
-
- PHOENIX_DEFINE_EXPRESSION(
- if_else_statement
- , (meta_grammar) // Cond
- (meta_grammar) // Then
- (meta_grammar) // Else
- )
-
     // Function for evaluating lambdas like:
     // if_( foo )[ bar ]
     // and

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/sequence.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/sequence.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/sequence.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -36,7 +36,7 @@
 
         template <typename Dummy>
         struct meta_grammar::case_<proto::tag::comma, Dummy>
- : proto::when<rule::sequence, proto::external_transform>
+ : enable_rule<rule::sequence>
         {};
 
 }}

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/switch.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -63,12 +63,6 @@
         {};
     }
 
- PHOENIX_DEFINE_EXPRESSION(
- switch_
- , (meta_grammar) // Cond
- (detail::switch_grammar) // Cases
- )
-
     namespace detail
     {
         struct switch_case_is_nullary
@@ -142,6 +136,15 @@
>
             {};
     }
+}}
+
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(switch_)
+ , (meta_grammar) // Cond
+ (detail::switch_grammar) // Cases
+)
+
+namespace boost { namespace phoenix {
 
     template <typename Dummy>
     struct is_nullary::when<rule::switch_, Dummy>

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/throw.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/throw.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/throw.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -44,8 +44,8 @@
     template <typename Dummy>
     struct meta_grammar::case_<tag::throw_, Dummy>
         : proto::or_<
- proto::when<rule::rethrow_, proto::external_transform>
- , proto::when<rule::throw_, proto::external_transform>
+ enable_rule<rule::rethrow_>
+ , enable_rule<rule::throw_>
>
     {};
 

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/try_catch.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/try_catch.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/try_catch.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -93,7 +93,7 @@
 
     template <typename Dummy>
     struct meta_grammar::case_<tag::try_catch, Dummy>
- : proto::when<rule::try_catch, proto::external_transform>
+ : enable_rule<rule::try_catch>
     {};
 
     struct try_catch_eval

Modified: sandbox/SOC/2010/phoenix3/boost/phoenix/statement/while.hpp
==============================================================================
--- sandbox/SOC/2010/phoenix3/boost/phoenix/statement/while.hpp (original)
+++ sandbox/SOC/2010/phoenix3/boost/phoenix/statement/while.hpp 2011-02-07 01:43:58 EST (Mon, 07 Feb 2011)
@@ -12,14 +12,14 @@
 #include <boost/phoenix/core/expression.hpp>
 #include <boost/phoenix/core/meta_grammar.hpp>
 
+PHOENIX_DEFINE_EXPRESSION(
+ (boost)(phoenix)(while_)
+ , (meta_grammar) // Cond
+ (meta_grammar) // Do
+)
+
 namespace boost { namespace phoenix
 {
- PHOENIX_DEFINE_EXPRESSION(
- while_
- , (meta_grammar) // Cond
- (meta_grammar) // Do
- )
-
     struct while_eval
     {
         typedef void result_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